From a936afc3ebb349c3aec8b5a595706f3c9749ad37 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Tue, 19 Feb 2013 13:28:24 +0000 Subject: d3dretrace: Replay IUnknown::AddRef/Release methods faithfully. Several D3D APIs (especially recent ones) keep track of reference counts and will ensure errors if reference counting is not properly done. For example, IDXGISwapChain::ResizeBuffers will fail if there are outstanding references to its buffers. --- retrace/retrace.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'retrace/retrace.py') diff --git a/retrace/retrace.py b/retrace/retrace.py index d09d72aa..70926c0b 100644 --- a/retrace/retrace.py +++ b/retrace/retrace.py @@ -478,10 +478,9 @@ class Retracer: # On release our reference when we reach Release() == 0 call in the # trace. if method.name == 'Release': - print ' if (call.ret->toUInt()) {' - print ' return;' + print ' if (call.ret->toUInt() == 0) {' + print ' retrace::delObj(call.arg(0));' print ' }' - print ' retrace::delObj(call.arg(0));' arg_names = ", ".join(method.argNames()) if method.type is not stdapi.Void: -- cgit v1.2.3