=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: d3d9/tests: Add test showing WM_SIZE is not sent during fullscreen mode change.

Alexandre Julliard julliard at winehq.org
Tue Feb 28 03:45:56 CST 2017


Module: wine
Branch: oldstable
Commit: 6e853bf9fcfddc4ca77159b83548c9e8a30785d6
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6e853bf9fcfddc4ca77159b83548c9e8a30785d6

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Tue Dec 13 13:10:37 2016 +0100

d3d9/tests: Add test showing WM_SIZE is not sent during fullscreen mode change.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 37daa3573760c7f4564830c4bfc808095c150357)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/d3d9/tests/device.c | 39 ++++++++++++++++++++++++++++++++++++---
 1 file changed, 36 insertions(+), 3 deletions(-)

diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
index 16723df..072fbcb 100644
--- a/dlls/d3d9/tests/device.c
+++ b/dlls/d3d9/tests/device.c
@@ -3187,7 +3187,7 @@ struct message
 
 static const struct message *expect_messages;
 static HWND device_window, focus_window;
-static LONG windowposchanged_received, syscommand_received;
+static LONG windowposchanged_received, syscommand_received, wm_size_received;
 
 struct wndproc_thread_param
 {
@@ -3243,6 +3243,8 @@ static LRESULT CALLBACK test_proc(HWND hwnd, UINT message, WPARAM wparam, LPARAM
         InterlockedIncrement(&windowposchanged_received);
     else if (message == WM_SYSCOMMAND)
         InterlockedIncrement(&syscommand_received);
+    else if (message == WM_SIZE)
+        InterlockedIncrement(&wm_size_received);
 
     return DefWindowProcA(hwnd, message, wparam, lparam);
 }
@@ -4046,11 +4048,14 @@ done:
 
 static void test_reset_fullscreen(void)
 {
+    struct device_desc device_desc;
+    D3DDISPLAYMODE d3ddm, d3ddm2;
+    unsigned int mode_count, i;
+    IDirect3DDevice9 *device;
     WNDCLASSEXA wc = {0};
-    IDirect3DDevice9 *device = NULL;
     IDirect3D9 *d3d;
+    HRESULT hr;
     ATOM atom;
-    struct device_desc device_desc;
     static const struct message messages[] =
     {
         /* Windows usually sends wparam = TRUE, except on the testbot,
@@ -4101,6 +4106,34 @@ static void test_reset_fullscreen(void)
     ok(expect_messages->message == 0, "Expected to receive message %#x.\n", expect_messages->message);
     expect_messages = NULL;
 
+    IDirect3D9_GetAdapterDisplayMode(d3d, D3DADAPTER_DEFAULT, &d3ddm);
+    mode_count = IDirect3D9_GetAdapterModeCount(d3d, D3DADAPTER_DEFAULT, d3ddm.Format);
+    for (i = 0; i < mode_count; ++i)
+    {
+        hr = IDirect3D9_EnumAdapterModes(d3d, D3DADAPTER_DEFAULT, d3ddm.Format, i, &d3ddm2);
+        ok(SUCCEEDED(hr), "Failed to enumerate display mode, hr %#x.\n", hr);
+
+        if (d3ddm2.Width != d3ddm.Width || d3ddm2.Height != d3ddm.Height)
+            break;
+    }
+    if (i == mode_count)
+    {
+        skip("Could not find a suitable display mode.\n");
+        goto cleanup;
+    }
+
+    wm_size_received = 0;
+
+    /* Fullscreen mode change. */
+    device_desc.width = d3ddm2.Width;
+    device_desc.height = d3ddm2.Height;
+    device_desc.device_window = device_window;
+    device_desc.flags = CREATE_DEVICE_FULLSCREEN;
+    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");
+
 cleanup:
     if (device) IDirect3DDevice9_Release(device);
     IDirect3D9_Release(d3d);




More information about the wine-cvs mailing list