def trace_function_impl_body(self, function):
GlTracer.trace_function_impl_body(self, function)
- # Take snapshots
- if function.name == 'eglSwapBuffers':
- print ' glsnapshot::snapshot(__call);'
- if function.name in ('glFinish', 'glFlush'):
- print ' tracer_context *ctx = __get_context();'
- print ' GLint __draw_framebuffer = 0;'
- print ' __glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &__draw_framebuffer);'
- print ' if (__draw_framebuffer == 0 && ctx->profile == PROFILE_COMPAT) {'
- 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 ' }'
if function.name == 'eglMakeCurrent':
print ' // update the profile'
print ' if (ctx != EGL_NO_CONTEXT) {'
print '#include <string.h>'
print '#include <dlfcn.h>'
print
- print '#include "trace_writer.hpp"'
+ print '#include "trace_writer_local.hpp"'
print
print '// To validate our prototypes'
print '#define GL_GLEXT_PROTOTYPES'
print
print '#include "glproc.hpp"'
print '#include "glsize.hpp"'
- print '#include "glsnapshot.hpp"'
print
print 'static __eglMustCastToProperFunctionPointerType __unwrap_proc_addr(const char * procname, __eglMustCastToProperFunctionPointerType procPtr);'
print
print ' return procPtr;'
print '}'
print
- print r'''
-
-/*
- * Lookup a EGL or GLES symbol
- */
-void * __libegl_sym(const char *symbol, bool pub)
-{
- void *proc;
-
- /*
- * Public symbols are EGL core functions and those defined in dekstop GL
- * ABI. Troubles come from the latter.
- */
- if (pub) {
- proc = dlsym(RTLD_NEXT, symbol);
- if (!proc && symbol[0] == 'g' && symbol[1] == 'l')
- proc = (void *) __eglGetProcAddress(symbol);
- }
- else {
- proc = (void *) __eglGetProcAddress(symbol);
- if (!proc && symbol[0] == 'g' && symbol[1] == 'l')
- proc = dlsym(RTLD_NEXT, symbol);
- }
-
- return proc;
-}
-'''