X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=wrappers%2Fcgltrace.py;h=c56edf24443911611050747fa9cc0a7fbec2688b;hb=570d8ccab67e230f61f9c79e4eaa6a1159bb6428;hp=9dd325350a4742042c99fe8f0f9c95345b7b722b;hpb=a4c698dfae954d04b459a9b9543d0404a4c80660;p=apitrace diff --git a/wrappers/cgltrace.py b/wrappers/cgltrace.py index 9dd3253..c56edf2 100644 --- a/wrappers/cgltrace.py +++ b/wrappers/cgltrace.py @@ -28,7 +28,7 @@ from gltrace import GlTracer -from specs.stdapi import API +from specs.stdapi import Module, API from specs.glapi import glapi from specs.cglapi import cglapi @@ -40,38 +40,44 @@ class CglTracer(GlTracer): return True def traceFunctionImplBody(self, function): + if function.name == 'CGLReleaseContext': + # Unlike other GL APIs like EGL or GLX, CGL will make the context + # not current if it's the current context. + print ' if (_CGLGetContextRetainCount(ctx) == 1) {' + print ' if (gltrace::releaseContext((uintptr_t)ctx)) {' + print ' if (_CGLGetCurrentContext() == ctx) {' + print ' gltrace::clearContext();' + print ' }' + print ' }' + print ' }' + + if function.name == 'CGLDestroyContext': + # The same rule applies here about the as for CGLReleaseContext. + print ' if (gltrace::releaseContext((uintptr_t)ctx)) {' + print ' if (_CGLGetCurrentContext() == ctx) {' + print ' gltrace::clearContext();' + print ' }' + print ' }' + GlTracer.traceFunctionImplBody(self, function) if function.name == 'CGLCreateContext': - print ' if (_result == kCGLNoError)' + print ' if (_result == kCGLNoError) {' print ' gltrace::createContext((uintptr_t)*ctx);' + print ' }' if function.name == 'CGLSetCurrentContext': print ' if (_result == kCGLNoError) {' - print ' if (ctx != NULL)' + print ' if (ctx != NULL) {' print ' gltrace::setContext((uintptr_t)ctx);' - print ' else' + print ' } else {' print ' gltrace::clearContext();' + print ' }' print ' }' if function.name == 'CGLRetainContext': print ' gltrace::retainContext((uintptr_t)ctx);' - if function.name == 'CGLReleaseContext': - # Unlike other GL APIs like EGL or GLX, CGL will make the context - # not current if it's the current context. - print ' if (gltrace::releaseContext((uintptr_t)ctx)) {' - print ' if ((uintptr_t)ctx == gltrace::getContext())' - print ' gltrace::clearContext();' - print ' }' - - if function.name == 'CGLDestroyContext': - # The same rule applies here about the as for CGLReleaseContext. - print ' if (gltrace::destroyContext((uintptr_t)ctx)) {' - print ' if ((uintptr_t)ctx == gltrace::getContext())' - print ' gltrace::clearContext();' - print ' }' - if __name__ == '__main__': print @@ -87,9 +93,11 @@ if __name__ == '__main__': print '#include "glsize.hpp"' print + module = Module() + module.mergeModule(cglapi) + module.mergeModule(glapi) api = API() - api.addApi(cglapi) - api.addApi(glapi) + api.addModule(module) tracer = CglTracer() tracer.traceApi(api)