From: José Fonseca Date: Fri, 3 Aug 2012 15:47:54 +0000 (+0100) Subject: Resize window on IDirect3DDevice9::Reset. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=0dd1f3df5feda7284cb9610f78583ff80fdaef0e;p=apitrace Resize window on IDirect3DDevice9::Reset. --- diff --git a/retrace/d3dretrace.hpp b/retrace/d3dretrace.hpp index 91f2357..c1bc0cd 100644 --- a/retrace/d3dretrace.hpp +++ b/retrace/d3dretrace.hpp @@ -50,6 +50,9 @@ extern const retrace::Entry d3d9_callbacks[]; HWND createWindow(int width, int height); +void +resizeWindow(HWND hWnd, int width, int height); + } /* namespace d3dretrace */ diff --git a/retrace/d3dretrace.py b/retrace/d3dretrace.py index a43289c..aed586e 100644 --- a/retrace/d3dretrace.py +++ b/retrace/d3dretrace.py @@ -54,6 +54,11 @@ class D3DRetracer(Retracer): 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);' diff --git a/retrace/d3dretrace_ws.cpp b/retrace/d3dretrace_ws.cpp index 8626a76..b8c29e8 100644 --- a/retrace/d3dretrace_ws.cpp +++ b/retrace/d3dretrace_ws.cpp @@ -104,6 +104,21 @@ createWindow(int width, int height) { } +void +resizeWindow(HWND hWnd, int width, int height) { + RECT rClient; + GetClientRect(hWnd, &rClient); + if (width == rClient.right - rClient.left && + height == rClient.bottom - rClient.top) { + return; + } + + RECT rWindow; + GetWindowRect(hWnd, &rWindow); + width += (rWindow.right - rWindow.left) - rClient.right; + height += (rWindow.bottom - rWindow.top) - rClient.bottom; + SetWindowPos(hWnd, NULL, rWindow.left, rWindow.top, width, height, SWP_NOMOVE); +}