]> git.cworth.org Git - apitrace/blobdiff - glxtrace.py
Make sure that the traces are always complete.
[apitrace] / glxtrace.py
index 2a49d25fcf0c18310ba3123c768ae7261425d2d6..6b5d786b6d91ff16f1562ceb9790f544481d51ed 100644 (file)
@@ -41,6 +41,23 @@ class GlxTracer(GlTracer):
         # The symbols visible in libGL.so can vary, so expose them all
         return True
 
+    def trace_function_impl_body(self, function):
+        GlTracer.trace_function_impl_body(self, function)
+
+        # Take snapshots
+        if function.name == 'glXSwapBuffers':
+            print '    glsnapshot::snapshot(__call);'
+        if function.name in ('glFinish', 'glFlush'):
+            print '    GLint __draw_framebuffer = 0;'
+            print '    __glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &__draw_framebuffer);'
+            print '    if (__draw_framebuffer == 0) {'
+            print '        GLint __draw_buffer = GL_NONE;'
+            print '        __glGetIntegerv(GL_DRAW_BUFFER, &__draw_buffer);'
+            print '        if (__draw_buffer == GL_FRONT) {'
+            print '             glsnapshot::snapshot(__call);'
+            print '        }'
+            print '    }'
+
     def wrap_ret(self, function, instance):
         GlTracer.wrap_ret(self, function, instance)
 
@@ -66,6 +83,7 @@ if __name__ == '__main__':
     print
     print '#include "glproc.hpp"'
     print '#include "glsize.hpp"'
+    print '#include "glsnapshot.hpp"'
     print
     print 'static __GLXextFuncPtr __unwrap_proc_addr(const GLubyte * procName, __GLXextFuncPtr procPtr);'
     print
@@ -83,7 +101,7 @@ if __name__ == '__main__':
     for f in api.functions:
         ptype = function_pointer_type(f)
         pvalue = function_pointer_value(f)
-        print '    if (!strcmp("%s", (const char *)procName)) {' % f.name
+        print '    if (strcmp("%s", (const char *)procName) == 0) {' % f.name
         print '        %s = (%s)procPtr;' % (pvalue, ptype)
         print '        return (__GLXextFuncPtr)&%s;' % (f.name,)
         print '    }'