mesa: Branch 'master'

Jerome Glisse glisse at kemper.freedesktop.org
Sun Jan 14 13:50:05 UTC 2007


 src/mesa/shader/program.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

New commits:
diff-tree 6dd967e74ff4cb03220d5785bd583203464d299d (from e7112be7321c58e6039fde28f47ffe3dce5cc205)
Author: Jerome Glisse <glisse at freedesktop.org>
Date:   Sun Jan 14 14:49:36 2007 +0100

    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.

diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c
index ddfad47..6db62f5 100644
--- a/src/mesa/shader/program.c
+++ b/src/mesa/shader/program.c
@@ -1947,6 +1947,8 @@ _mesa_BindProgram(GLenum target, GLuint 
 
    /* 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 
  * \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;



More information about the mesa-commit mailing list