From 4d5cfa41aad626e6e47590b3d1286742c8bb4abb Mon Sep 17 00:00:00 2001 From: Jose Fonseca Date: Fri, 17 Jul 2015 16:21:05 +0100 Subject: [PATCH] dxgiretrace: More tweaks to IDXGIKeyedMutex. They do have side-effects. --- retrace/dxgiretrace.py | 5 +++++ specs/dxgi.py | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/retrace/dxgiretrace.py b/retrace/dxgiretrace.py index 4c65f5a89..568b68692 100755 --- a/retrace/dxgiretrace.py +++ b/retrace/dxgiretrace.py @@ -358,6 +358,11 @@ def invokeInterfaceMethod(self, interface, method): Retracer.invokeInterfaceMethod(self, interface, method) + if method.name in ('AcquireSync', 'ReleaseSync'): + print r' if (SUCCEEDED(_result) && _result != S_OK) {' + print r' retrace::warning(call) << " returned " << _result << "\n";' + print r' }' + # process events after presents if method.name == 'Present': print r' d3dretrace::processEvents();' diff --git a/specs/dxgi.py b/specs/dxgi.py index d2d6583f6..7349e25a8 100644 --- a/specs/dxgi.py +++ b/specs/dxgi.py @@ -171,6 +171,9 @@ "DXGI_ERROR_NOT_CURRENTLY_AVAILABLE", "DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED", "DXGI_ERROR_REMOTE_OUTOFMEMORY", + # IDXGIKeyedMutex::AcquireSync + "WAIT_ABANDONED", + "WAIT_TIMEOUT", ]) @@ -379,9 +382,13 @@ StdMethod(HRESULT, "GetEvictionPriority", [Out(Pointer(DXGI_RESOURCE_PRIORITY), "pEvictionPriority")], sideeffects=False), ] +DWORD_TIMEOUT = FakeEnum(DWORD, [ + "INFINITE", +]) + IDXGIKeyedMutex.methods += [ - StdMethod(HRESULT, "AcquireSync", [(UINT64, "Key"), (DWORD, "dwMilliseconds")], sideeffects=False), - StdMethod(HRESULT, "ReleaseSync", [(UINT64, "Key")], sideeffects=False), + StdMethod(HRESULT, "AcquireSync", [(UINT64, "Key"), (DWORD_TIMEOUT, "dwMilliseconds")]), + StdMethod(HRESULT, "ReleaseSync", [(UINT64, "Key")]), ] DXGI_MAP = Flags(UINT, [