]> git.cworth.org Git - apitrace/blobdiff - wrappers/ddrawtrace.py
trace: Unwrap all args before serializing them.
[apitrace] / wrappers / ddrawtrace.py
index e640f40ad7d857c751ec22f1d8c13ca24974174d..94e39e2d126e3c2d18db984af49a7f946d6c4a58 100644 (file)
 
 
 from dlltrace import DllTracer
+from specs.stdapi import API
 from specs.d3d import ddraw, interfaces
 
 
-class DDrawTracer(DllTracer):
-
-    def traceFunctionImplBody(self, function):
-        if function.name in ('AcquireDDThreadLock', 'ReleaseDDThreadLock'):
-            self.invokeFunction(function)
-            return
-
-        DllTracer.traceFunctionImplBody(self, function)
-
-    def serializeArg(self, function, arg):
-        if function.name == 'DirectDrawCreateEx' and arg.name == 'lplpDD':
-            print '    if (*lplpDD) {'
-            for iface in interfaces:
-                print '        if (iid == IID_%s) {' % iface.name
-                print '            *lplpDD = (LPVOID) new Wrap%s((%s *)*lplpDD);' % (iface.name, iface.name)
-                print '        }'
-            print '    }'
-
-        DllTracer.serializeArg(self, function, arg)
-
-
 if __name__ == '__main__':
     print '#define INITGUID'
     print '#include <windows.h>'
@@ -77,5 +57,8 @@ if __name__ == '__main__':
     print '#include "trace_writer_local.hpp"'
     print '#include "os.hpp"'
     print
-    tracer = DDrawTracer('ddraw.dll')
-    tracer.trace_api(ddraw)
+
+    api = API()
+    api.addModule(ddraw)
+    tracer = DllTracer()
+    tracer.traceApi(api)