From: José Fonseca Date: Tue, 31 Jan 2012 19:07:03 +0000 (+0000) Subject: Merge branch 'master' into d2d X-Git-Url: https://git.cworth.org/git?p=apitrace;a=commitdiff_plain;h=2ae3c962d308ceb866f7478866cdcc85f50a987d Merge branch 'master' into d2d Conflicts: compat.h --- 2ae3c962d308ceb866f7478866cdcc85f50a987d diff --cc d3d9trace.py index a40ae7f,c408b49..ae4acd0 --- a/d3d9trace.py +++ b/d3d9trace.py @@@ -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 trace.py index 3800500,a939533..fe35bea --- a/trace.py +++ 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: @@@ -514,23 -540,19 +540,19 @@@ 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: