print r' d3dretrace::pLastDirect3DDevice9 = _this;'
# create windows as neccessary
- if method.name in ('CreateDevice', 'CreateDeviceEx'):
+ if method.name in ('CreateDevice', 'CreateDeviceEx', 'CreateAdditionalSwapChain'):
print r' HWND hWnd = d3dretrace::createWindow(pPresentationParameters->BackBufferWidth, pPresentationParameters->BackBufferHeight);'
- print r' hFocusWindow = hWnd;'
print r' pPresentationParameters->hDeviceWindow = hWnd;'
+ if 'hFocusWindow' in method.argNames():
+ print r' hFocusWindow = hWnd;'
+
+ if method.name in ('Reset', 'ResetEx'):
+ print r' if (pPresentationParameters->Windowed) {'
+ print r' d3dretrace::resizeWindow(pPresentationParameters->hDeviceWindow, pPresentationParameters->BackBufferWidth, pPresentationParameters->BackBufferHeight);'
+ print r' }'
# notify frame has been completed
if method.name == 'Present':
print r' retrace::frameComplete(call);'
+ print r' hDestWindowOverride = NULL;'
if 'pSharedHandle' in method.argNames():
print r' if (pSharedHandle) {'
Retracer.invokeInterfaceMethod(self, interface, method)
+ # process events after presents
+ if method.name == 'Present':
+ print r' d3dretrace::processEvents();'
+
# check errors
if str(method.type) == 'HRESULT':
print r' if (FAILED(_result)) {'