# 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);'
# 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);'