From: José Fonseca Date: Sat, 3 Nov 2012 12:09:17 +0000 (+0000) Subject: Don't rely on D3D private data mechanism. X-Git-Url: https://git.cworth.org/git?p=apitrace;a=commitdiff_plain;h=2d4f64cea2e02ab2924ad0d0e0b1b3abfbce610a Don't rely on D3D private data mechanism. --- diff --git a/retrace/d3dretrace.py b/retrace/d3dretrace.py index ddd37b9..87fdd2e 100644 --- a/retrace/d3dretrace.py +++ b/retrace/d3dretrace.py @@ -35,7 +35,8 @@ from specs.d3d9 import * class D3DRetracer(Retracer): def retraceApi(self, api): - print 'static const GUID GUID_D3DRETRACE = {0x7D71CAC9,0x7F58,0x432C,{0xA9,0x75,0xA1,0x9F,0xCF,0xCE,0xFD,0x14}};' + print '// Swizzling mapping for lock addresses' + print 'static std::map _locks;' print self.table_name = 'd3dretrace::%s_callbacks' % api.name.lower() @@ -86,12 +87,11 @@ class D3DRetracer(Retracer): print ' VOID *_pbData = NULL;' print ' size_t _LockedSize = 0;' print ' _getLockInfo(_this, %s, _pbData, _LockedSize);' % ', '.join(method.argNames()[:-1]) - print ' _this->SetPrivateData(GUID_D3DRETRACE, &_pbData, sizeof _pbData, 0);' + print ' _locks[_this] = _pbData;' if method.name in ('Unlock', 'UnlockRect', 'UnlockBox'): print ' VOID *_pbData = 0;' - print ' DWORD dwSizeOfData = sizeof _pbData;' - print ' _this->GetPrivateData(GUID_D3DRETRACE, &_pbData, &dwSizeOfData);' + print ' _pbData = _locks[_this];' print ' if (_pbData) {' print ' retrace::delRegionByPointer(_pbData);' print ' }'