]> git.cworth.org Git - apitrace/commitdiff
Resize window on IDirect3DDevice9::Reset.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 3 Aug 2012 15:47:54 +0000 (16:47 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 3 Aug 2012 15:47:54 +0000 (16:47 +0100)
retrace/d3dretrace.hpp
retrace/d3dretrace.py
retrace/d3dretrace_ws.cpp

index 91f235766284474c0cf412ba7fcf2d8099cc714a..c1bc0cd592e7b3f82e5955d1ee34c13e03154cf0 100644 (file)
@@ -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 */
 
index a43289cc64ea6ef9b855ddc4c851d1c4ee4f4009..aed586ede9f9c03827c5cef04656d6303bf7a424 100644 (file)
@@ -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);'
index 8626a764597e49507aa9cb6e6eb2ae654720eb71..b8c29e85078bc69d1eb620eb2653fc85231f4ef5 100644 (file)
@@ -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);
+}