[PATCH 3/3] wined3d: Filter messages for fullscreen mode changes.

Józef Kucia jkucia at codeweavers.com
Tue Dec 13 06:10:38 CST 2016


This fixes a regression introduced by commit
d9f8cba50f4c2fc9f138d35c73ba5afc30d15866.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/d3d9/tests/device.c | 2 +-
 dlls/wined3d/swapchain.c | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
index cadd461..7513df6 100644
--- a/dlls/d3d9/tests/device.c
+++ b/dlls/d3d9/tests/device.c
@@ -4310,7 +4310,7 @@ static void test_reset_fullscreen(void)
     ok(SUCCEEDED(reset_device(device, &device_desc)), "Failed to reset device.\n");
 
     flush_events();
-    todo_wine ok(!wm_size_received, "Received unexpected WM_SIZE message.\n");
+    ok(!wm_size_received, "Received unexpected WM_SIZE message.\n");
 
 cleanup:
     if (device) IDirect3DDevice9_Release(device);
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 7bbcc86..06215fc 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -1525,6 +1525,7 @@ HRESULT CDECL wined3d_swapchain_set_fullscreen(struct wined3d_swapchain *swapcha
 
         if (swapchain->desc.windowed)
         {
+            /* Switch from windowed to fullscreen */
             HWND focus_window = device->create_parms.focus_window;
             if (!focus_window)
                 focus_window = swapchain->device_window;
@@ -1534,20 +1535,24 @@ HRESULT CDECL wined3d_swapchain_set_fullscreen(struct wined3d_swapchain *swapcha
                 return hr;
             }
 
-            /* switch from windowed to fs */
             wined3d_device_setup_fullscreen_window(device, swapchain->device_window, width, height);
         }
         else
         {
             /* Fullscreen -> fullscreen mode change */
+            BOOL filter_messages = device->filter_messages;
+            device->filter_messages = TRUE;
+
             MoveWindow(swapchain->device_window, 0, 0, width, height, TRUE);
+
+            device->filter_messages = filter_messages;
         }
         swapchain->d3d_mode = actual_mode;
     }
     else if (!swapchain->desc.windowed)
     {
-        RECT *window_rect = NULL;
         /* Fullscreen -> windowed switch */
+        RECT *window_rect = NULL;
         if (swapchain->desc.flags & WINED3D_SWAPCHAIN_RESTORE_WINDOW_RECT)
             window_rect = &swapchain->original_window_rect;
         wined3d_device_restore_fullscreen_window(device, swapchain->device_window, window_rect);
-- 
2.7.3




More information about the wine-patches mailing list