Browse Source

mesa: Update _Current ptr along Current when a new vertex program is bind.

On new vertex program bind only the Current ptr where updated to
point to the new program; this could lead to _Current pointing to
and out of date or even a no more existing program which in turn
could lead to a segfault in some driver. To avoid this _Current
ptr is updated along Current if _Current where previously pointing
to the same program.
tags/pre-merge-glsl-compiler-1
Jerome Glisse 18 years ago
parent
commit
6dd967e74f
1 changed files with 3 additions and 1 deletions
  1. 3
    1
      src/mesa/shader/program.c

+ 3
- 1
src/mesa/shader/program.c View File

@@ -1947,6 +1947,8 @@ _mesa_BindProgram(GLenum target, GLuint id)

/* bind newProg */
if (target == GL_VERTEX_PROGRAM_ARB) { /* == GL_VERTEX_PROGRAM_NV */
if (ctx->VertexProgram._Current == ctx->VertexProgram.Current)
ctx->VertexProgram._Current = (struct gl_vertex_program *) newProg;
ctx->VertexProgram.Current = (struct gl_vertex_program *) newProg;
}
else if (target == GL_FRAGMENT_PROGRAM_NV ||
@@ -1969,7 +1971,7 @@ _mesa_BindProgram(GLenum target, GLuint id)
* \note Not compiled into display lists.
* \note Called by both glDeleteProgramsNV and glDeleteProgramsARB.
*/
void GLAPIENTRY
void GLAPIENTRY
_mesa_DeletePrograms(GLsizei n, const GLuint *ids)
{
GLint i;

Loading…
Cancel
Save