]> git.cworth.org Git - apitrace/commitdiff
Merge branch 'master' into d2d
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Tue, 31 Jan 2012 19:07:03 +0000 (19:07 +0000)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Tue, 31 Jan 2012 19:07:03 +0000 (19:07 +0000)
Conflicts:
compat.h

1  2 
CMakeLists.txt
d3d9trace.py
specs/stdapi.py
trace.py

diff --cc CMakeLists.txt
Simple merge
diff --cc d3d9trace.py
index a40ae7f5f1eed1bcb189a3ea78ed848ec0e1d88f,c408b497b48f9aad156f6e23b5cb78c0f4013799..ae4acd039fe39f2b274afdfa46f9f624f003611f
@@@ -45,24 -45,24 +45,24 @@@ class D3D9Tracer(DllTracer)
              print '    UINT m_SizeToLock;'
              print '    VOID *m_pbData;'
  
 -    def implementWrapperInterfaceMethodBody(self, interface, method):
 +    def implementWrapperInterfaceMethodBody(self, interface, base, method):
          if interface.name == 'IDirect3DVertexBuffer9' and method.name == 'Unlock':
              print '    if (m_pbData) {'
-             print '        if (!m_SizeToLock) {'
-             print '            D3DVERTEXBUFFER_DESC Desc;'
-             print '            m_pInstance->GetDesc(&Desc);'
-             print '            m_SizeToLock = Desc.Size;'
-             print '        }'
-             self.emit_memcpy('(LPBYTE)m_pbData + m_OffsetToLock', '(LPBYTE)m_pbData + m_OffsetToLock', 'm_SizeToLock')
+             self.emit_memcpy('(LPBYTE)m_pbData', '(LPBYTE)m_pbData', 'm_SizeToLock')
              print '    }'
  
 -        DllTracer.implementWrapperInterfaceMethodBody(self, interface, method)
 +        DllTracer.implementWrapperInterfaceMethodBody(self, interface, base, method)
  
          if interface.name == 'IDirect3DVertexBuffer9' and method.name == 'Lock':
+             # FIXME: handle recursive locks
              print '    if (__result == D3D_OK && !(Flags & D3DLOCK_READONLY)) {'
-             print '        m_OffsetToLock = OffsetToLock;'
-             print '        m_SizeToLock = SizeToLock;'
+             print '        if (SizeToLock) {'
+             print '            m_SizeToLock = SizeToLock;'
+             print '        } else {'
+             print '            D3DVERTEXBUFFER_DESC Desc;'
+             print '            m_pInstance->GetDesc(&Desc);'
+             print '            m_SizeToLock = Desc.Size;'
+             print '        }'
              print '        m_pbData = *ppbData;'
              print '    } else {'
              print '        m_pbData = NULL;'
diff --cc specs/stdapi.py
Simple merge
diff --cc trace.py
index 38005008941efeb4e3744cbecf1ac3a9a5a01a66,a9395339c2981b054a612fbbacdcd43c2adcf4ec..fe35bea19699730a47abe98287f3f2382f8db90b
+++ b/trace.py
@@@ -488,9 -503,11 +503,11 @@@ class Tracer
              if not arg.output:
                  self.unwrapArg(method, arg)
                  self.serializeArg(method, arg)
+                 if arg.type is REFIID:
+                     riid = arg
          print '    trace::localWriter.endEnter();'
          
 -        self.invokeMethod(interface, method)
 +        self.invokeMethod(interface, base, method)
  
          print '    trace::localWriter.beginLeave(__call);'
          for arg in method.args:
                  print r'        }'
              print r'        else {'
              print r'            os::log("apitrace: warning: unknown REFIID {0x%08lX,0x%04X,0x%04X,{0x%02X,0x%02X,0x%02X,0x%02X,0x%02X,0x%02X,0x%02X,0x%02X}}\n",'
-             print r'                    riid.Data1, riid.Data2, riid.Data3,'
-             print r'                    riid.Data4[0],'
-             print r'                    riid.Data4[1],'
-             print r'                    riid.Data4[2],'
-             print r'                    riid.Data4[3],'
-             print r'                    riid.Data4[4],'
-             print r'                    riid.Data4[5],'
-             print r'                    riid.Data4[6],'
-             print r'                    riid.Data4[7]);'
+             print r'                    %s.Data1, %s.Data2, %s.Data3,' % (riid.name, riid.name, riid.name)
+             print r'                    %s.Data4[0],' % (riid.name,)
+             print r'                    %s.Data4[1],' % (riid.name,)
+             print r'                    %s.Data4[2],' % (riid.name,)
+             print r'                    %s.Data4[3],' % (riid.name,)
+             print r'                    %s.Data4[4],' % (riid.name,)
+             print r'                    %s.Data4[5],' % (riid.name,)
+             print r'                    %s.Data4[6],' % (riid.name,)
+             print r'                    %s.Data4[7]);' % (riid.name,)
              print r'        }'
              print '    }'
-         if method.name == 'Release':
-             assert method.type is not stdapi.Void
-             print '    if (!__result)'
-             print '        delete this;'
  
 -    def invokeMethod(self, interface, method):
 +    def invokeMethod(self, interface, base, method):
          if method.type is stdapi.Void:
              result = ''
          else: