From db62f0f52959d781874bb3b58794d86f426d2158 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 27 Jun 2013 16:15:01 +0100 Subject: [PATCH] Only unbind dumpers when objects are truly released. --- retrace/d3d9retrace.py | 8 ++++++-- retrace/dxgiretrace.py | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/retrace/d3d9retrace.py b/retrace/d3d9retrace.py index 9dcde71..d7f86c4 100644 --- a/retrace/d3d9retrace.py +++ b/retrace/d3d9retrace.py @@ -59,12 +59,16 @@ class D3DRetracer(Retracer): # keep track of the last used device for state dumping if interface.name in ('IDirect3DDevice9', 'IDirect3DDevice9Ex'): if method.name == 'Release': - print r' d3d9Dumper.unbindDevice(_this);' + print r' if (call.ret->toUInt() == 0) {' + print r' d3d9Dumper.unbindDevice(_this);' + print r' }' else: print r' d3d9Dumper.bindDevice(_this);' if interface.name in ('IDirect3DDevice8', 'IDirect3DDevice8Ex'): if method.name == 'Release': - print r' d3d8Dumper.unbindDevice(_this);' + print r' if (call.ret->toUInt() == 0) {' + print r' d3d8Dumper.unbindDevice(_this);' + print r' }' else: print r' d3d8Dumper.bindDevice(_this);' diff --git a/retrace/dxgiretrace.py b/retrace/dxgiretrace.py index 7dcc701..2eeb3ca 100644 --- a/retrace/dxgiretrace.py +++ b/retrace/dxgiretrace.py @@ -178,12 +178,16 @@ createWindow(DXGI_SWAP_CHAIN_DESC *pSwapChainDesc) { # keep track of the last used device for state dumping if interface.name in ('ID3D10Device', 'ID3D10Device1'): if method.name == 'Release': - print r' d3d10Dumper.unbindDevice(_this);' + print r' if (call.ret->toUInt() == 0) {' + print r' d3d10Dumper.unbindDevice(_this);' + print r' }' else: print r' d3d10Dumper.bindDevice(_this);' if interface.name in ('ID3D11DeviceContext', 'ID3D11DeviceContext1'): if method.name == 'Release': - print r' d3d11Dumper.unbindDevice(_this);' + print r' if (call.ret->toUInt() == 0) {' + print r' d3d11Dumper.unbindDevice(_this);' + print r' }' else: print r' if (_this->GetType() == D3D11_DEVICE_CONTEXT_IMMEDIATE) {' print r' d3d11Dumper.bindDevice(_this);' -- 2.45.2