]> git.cworth.org Git - apitrace/blobdiff - wrappers/d3d9trace.py
Fix volume locked size computation.
[apitrace] / wrappers / d3d9trace.py
index ef5a14c6f436aacdab461f6622af0bbfc85eacbd..c82d525993aae1ae0a76344c329d89db21d039be 100644 (file)
@@ -38,25 +38,28 @@ class D3D9Tracer(DllTracer):
 
         DllTracer.serializeArgValue(self, function, arg)
 
-    def declareWrapperInterfaceVariables(self, interface):
-        DllTracer.declareWrapperInterfaceVariables(self, interface)
+    def enumWrapperInterfaceVariables(self, interface):
+        variables = DllTracer.enumWrapperInterfaceVariables(self, interface)
         
         if interface.getMethodByName('Lock') is not None or \
            interface.getMethodByName('LockRect') is not None or \
            interface.getMethodByName('LockBox') is not None:
-            print '    size_t _LockedSize;'
-            print '    VOID *m_pbData;'
+            variables += [
+                ('size_t', '_LockedSize', '0'),
+                ('VOID *', 'm_pbData', '0'),
+            ]
 
+        return variables
 
     def implementWrapperInterfaceMethodBody(self, interface, base, method):
         if method.name in ('Unlock', 'UnlockRect', 'UnlockBox'):
-            print '    if (m_pbData) {'
+            print '    if (_LockedSize && m_pbData) {'
             self.emit_memcpy('(LPBYTE)m_pbData', '(LPBYTE)m_pbData', '_LockedSize')
             print '    }'
 
         DllTracer.implementWrapperInterfaceMethodBody(self, interface, base, method)
 
-        if method.name in ('Lock', 'LockRect', 'LockedBox'):
+        if method.name in ('Lock', 'LockRect', 'LockBox'):
             print '    if (SUCCEEDED(_result) && !(Flags & D3DLOCK_READONLY)) {'
             print '        _LockedSize = _getLockSize(_this, %s);' % ', '.join(method.argNames()[:-1])
             if method.name == 'Lock':
@@ -65,7 +68,7 @@ class D3D9Tracer(DllTracer):
             elif method.name == 'LockRect':
                 print '        m_pbData = pLockedRect->pBits;'
             elif method.name == 'LockBox':
-                print '        m_pbData = pLockedBox->pBits;'
+                print '        m_pbData = pLockedVolume->pBits;'
             else:
                 raise NotImplementedError
             print '    } else {'