X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=wrappers%2Fglxtrace.py;h=9c0f87dbcb443fba7fd520317368877062550c33;hb=c0ebdbd058b6ff62f0e976ee4b0c905d64918429;hp=029582f8981da99b5da3e725fcaf2af42f3efc1b;hpb=632a78d5c90941c896fa3c7156131f27c5a58b24;p=apitrace diff --git a/wrappers/glxtrace.py b/wrappers/glxtrace.py index 029582f..9c0f87d 100644 --- a/wrappers/glxtrace.py +++ b/wrappers/glxtrace.py @@ -29,7 +29,7 @@ from gltrace import GlTracer -from specs.stdapi import API +from specs.stdapi import Module, API from specs.glapi import glapi from specs.glxapi import glxapi @@ -45,6 +45,41 @@ class GlxTracer(GlTracer): "glXGetProcAddressARB", ] + createContextFunctionNames = [ + 'glXCreateContext', + 'glXCreateContextAttribsARB', + 'glXCreateContextWithConfigSGIX', + 'glXCreateNewContext', + ] + + destroyContextFunctionNames = [ + 'glXDestroyContext', + ] + + makeCurrentFunctionNames = [ + 'glXMakeCurrent', + 'glXMakeContextCurrent', + 'glXMakeCurrentReadSGI', + ] + + def traceFunctionImplBody(self, function): + if function.name in self.destroyContextFunctionNames: + print ' gltrace::releaseContext((uintptr_t)ctx);' + + GlTracer.traceFunctionImplBody(self, function) + + if function.name in self.createContextFunctionNames: + print ' if (_result != NULL)' + print ' gltrace::createContext((uintptr_t)_result);' + + if function.name in self.makeCurrentFunctionNames: + print ' if (_result) {' + print ' if (ctx != NULL)' + print ' gltrace::setContext((uintptr_t)ctx);' + print ' else' + print ' gltrace::clearContext();' + print ' }' + if __name__ == '__main__': print @@ -66,9 +101,11 @@ if __name__ == '__main__': print '#include "glsize.hpp"' print + module = Module() + module.mergeModule(glxapi) + module.mergeModule(glapi) api = API() - api.addApi(glxapi) - api.addApi(glapi) + api.addModule(module) tracer = GlxTracer() tracer.traceApi(api)