X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glxtrace.py;h=7511f0a392ac7afc53acaa6a758c5cbc63b72c62;hb=234d0bcb5e59b7d11697beb241fb1e13270b1807;hp=55fafc8ef33efa38a8d4a4ce3b04f01adf3fea63;hpb=cbd225f575a0b92a293513223c4c9a74d2d4f8ab;p=apitrace diff --git a/glxtrace.py b/glxtrace.py index 55fafc8..7511f0a 100644 --- a/glxtrace.py +++ b/glxtrace.py @@ -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 @@ -166,7 +184,7 @@ void * dlopen(const char *filename, int flag) /* * Lookup a libGL symbol */ -static void * __dlsym(const char *symbol) +void * __libgl_sym(const char *symbol) { void *result;