X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fd3d9retrace.py;h=d7f86c4f85b5fd285c2622113d4f6b01fca659ac;hb=ad6f60ff31d1cc912e947989afea39d698181ac4;hp=72fc9ef81b6578846ed36bfe8988efdea917cb51;hpb=c0184ad9b5cf84e9ebd6dbea9d8f28256f94ef5a;p=apitrace diff --git a/retrace/d3d9retrace.py b/retrace/d3d9retrace.py index 72fc9ef..d7f86c4 100644 --- a/retrace/d3d9retrace.py +++ b/retrace/d3d9retrace.py @@ -59,9 +59,18 @@ 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' if (call.ret->toUInt() == 0) {' + print r' d3d8Dumper.unbindDevice(_this);' + print r' }' + else: + print r' d3d8Dumper.bindDevice(_this);' # create windows as neccessary if method.name in ('CreateDevice', 'CreateDeviceEx', 'CreateAdditionalSwapChain'): @@ -101,7 +110,7 @@ class D3DRetracer(Retracer): print r' }' # notify frame has been completed - if method.name == 'Present': + if method.name in ('Present', 'PresentEx'): print r' retrace::frameComplete(call);' print r' hDestWindowOverride = NULL;' @@ -116,7 +125,6 @@ class D3DRetracer(Retracer): # process events after presents if method.name == 'Present': print r' d3dretrace::processEvents();' - print r' Sleep(500);' if method.name in ('Lock', 'LockRect', 'LockBox'): print ' VOID *_pbData = NULL;' @@ -161,12 +169,11 @@ def main(): print elif moduleName == 'd3d8': from specs.d3d8 import d3d8 - print r'#include ' - print r'#include ' + print r'#include "d3d8imports.hpp"' print r'#include "d3d8size.hpp"' api.addModule(d3d8) print - #print '''static d3dretrace::D3DDumper d3d8Dumper;''' + print '''static d3dretrace::D3DDumper d3d8Dumper;''' print else: assert False