]> git.cworth.org Git - apitrace/commitdiff
Fix retracing when glUseProgram & glUseProgramObjectARB are used inside call lists.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 5 Oct 2012 11:07:28 +0000 (12:07 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 5 Oct 2012 11:07:28 +0000 (12:07 +0100)
retrace/glretrace.py

index 6c73e697d9128f3947b50d5be712f30916dbd7bb..f2cc37232032387af218e300cf6b318eb43e1e3c 100644 (file)
@@ -477,14 +477,19 @@ class GlRetracer(Retracer):
            and 'program' not in function.argNames():
             # Determine the active program for uniforms swizzling
             print '    GLint program = -1;'
-            print '    GLint pipeline = 0;'
-            print '    if (_pipelineHasBeenBound) {'
-            print '        glGetIntegerv(GL_PROGRAM_PIPELINE_BINDING, &pipeline);'
-            print '    }'
-            print '    if (pipeline) {'
-            print '        glGetProgramPipelineiv(pipeline, GL_ACTIVE_PROGRAM, &program);'
+            print '    if (glretrace::insideList) {'
+            print '        // glUseProgram & glUseProgramObjectARB are display-list-able'
+            print '        program = _program_map[glretrace::currentContext->activeProgram];'
             print '    } else {'
-            print '        glGetIntegerv(GL_CURRENT_PROGRAM, &program);'
+            print '        GLint pipeline = 0;'
+            print '        if (_pipelineHasBeenBound) {'
+            print '            glGetIntegerv(GL_PROGRAM_PIPELINE_BINDING, &pipeline);'
+            print '        }'
+            print '        if (pipeline) {'
+            print '            glGetProgramPipelineiv(pipeline, GL_ACTIVE_PROGRAM, &program);'
+            print '        } else {'
+            print '            glGetIntegerv(GL_CURRENT_PROGRAM, &program);'
+            print '        }'
             print '    }'
             print