[PATCH 6/7] ddraw/tests: Test messages on focus loss (v2).
Stefan Dösinger
stefan at codeweavers.com
Thu Nov 13 13:39:30 CST 2014
Version 2: Do not restore the primary surface after restoring focus.
This works around a crash in GetSurfaceDesc on the Windows 8 testbot.
GetSurfaceDesc after a mode change seems to be unstable on the testbot
and/or Windows 8 in general. I don't have a real Win8 machine to
compare. If this causes more issues in further changes to the test we
can move the surface size checks after mode changes into a separate
test to make it easier to maintain a call sequence that doesn't hit the
bug.
---
dlls/ddraw/tests/ddraw1.c | 99 +++++++++++++++++++++++++++++++-------------
dlls/ddraw/tests/ddraw2.c | 103 ++++++++++++++++++++++++++++++++--------------
dlls/ddraw/tests/ddraw4.c | 103 ++++++++++++++++++++++++++++++++--------------
dlls/ddraw/tests/ddraw7.c | 103 ++++++++++++++++++++++++++++++++--------------
4 files changed, 286 insertions(+), 122 deletions(-)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 0ae204c..98d56d4 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -428,12 +428,26 @@ static void destroy_material(IDirect3DMaterial *material)
IDirect3DMaterial_Release(material);
}
-static const UINT *expect_messages;
+struct message
+{
+ UINT message;
+ BOOL check_wparam;
+ WPARAM expect_wparam;
+};
+
+static const struct message *expect_messages;
static LRESULT CALLBACK test_proc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
- if (expect_messages && message == *expect_messages)
+ if (expect_messages && message == expect_messages->message)
+ {
+ if (expect_messages->check_wparam)
+ ok (wparam == expect_messages->expect_wparam,
+ "Got unexpected wparam %lx for message %x, expected %lx.\n",
+ wparam, message, expect_messages->expect_wparam);
+
++expect_messages;
+ }
return DefWindowProcA(hwnd, message, wparam, lparam);
}
@@ -1878,15 +1892,15 @@ static void test_wndproc(void)
HRESULT hr;
ULONG ref;
- static const UINT messages[] =
+ static struct message messages[] =
{
- WM_WINDOWPOSCHANGING,
- WM_MOVE,
- WM_SIZE,
- WM_WINDOWPOSCHANGING,
- WM_ACTIVATE,
- WM_SETFOCUS,
- 0,
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_MOVE, FALSE, 0},
+ {WM_SIZE, FALSE, 0},
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_ACTIVATE, FALSE, 0},
+ {WM_SETFOCUS, FALSE, 0},
+ {0, FALSE, 0},
};
/* DDSCL_EXCLUSIVE replaces the window's window proc. */
@@ -1906,7 +1920,7 @@ static void test_wndproc(void)
expect_messages = messages;
hr = IDirectDraw_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
proc = GetWindowLongPtrA(window, GWLP_WNDPROC);
ok(proc != (LONG_PTR)test_proc, "Expected wndproc != %#lx, got %#lx.\n",
@@ -2147,19 +2161,34 @@ static void test_coop_level_mode_set(void)
BOOL ret;
LONG change_ret;
- static const UINT exclusive_messages[] =
+ static const struct message exclusive_messages[] =
{
- WM_WINDOWPOSCHANGING,
- WM_WINDOWPOSCHANGED,
- WM_SIZE,
- WM_DISPLAYCHANGE,
- 0,
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_WINDOWPOSCHANGED, FALSE, 0},
+ {WM_SIZE, FALSE, 0},
+ {WM_DISPLAYCHANGE, FALSE, 0},
+ {0, FALSE, 0},
+ };
+ static const struct message exclusive_focus_loss_messages[] =
+ {
+ {WM_ACTIVATE, TRUE, WA_INACTIVE},
+ /*{WM_DISPLAYCHANGE, FALSE, 0}, Not yet implemented on Wine. */
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ /* Like d3d8 and d3d9 ddraw seems to use SW_SHOWMINIMIZED instead of
+ * SW_MINIMIZED, causing a recursive window activation that does not
+ * produe the same result in Wine yet. Ignore the difference for now.
+ * {WM_ACTIVATE, TRUE, 0x200000 | WA_ACTIVE}, */
+ {WM_WINDOWPOSCHANGED, FALSE, 0},
+ {WM_MOVE, FALSE, 0},
+ {WM_SIZE, TRUE, SIZE_MINIMIZED},
+ {WM_ACTIVATEAPP, TRUE, FALSE},
+ {0, FALSE, 0},
};
- static const UINT normal_messages[] =
+ static const struct message normal_messages[] =
{
- WM_DISPLAYCHANGE,
- 0,
+ {WM_DISPLAYCHANGE, FALSE, 0},
+ {0, FALSE, 0},
};
ddraw = create_ddraw();
@@ -2234,7 +2263,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == param.ddraw_width && screen_size.cy == param.ddraw_height,
"Expected screen size %ux%u, got %ux%u.\n",
@@ -2280,7 +2309,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == param.user32_width && screen_size.cy == param.user32_height,
"Expected screen size %ux%u, got %ux%u.\n",
@@ -2291,6 +2320,18 @@ static void test_coop_level_mode_set(void)
user32_rect.left, user32_rect.top, user32_rect.right, user32_rect.bottom,
r.left, r.top, r.right, r.bottom);
+ expect_messages = exclusive_focus_loss_messages;
+ SetForegroundWindow(GetDesktopWindow());
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+
+ ShowWindow(window, SW_RESTORE);
+ hr = IDirectDraw_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+ ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
+ /* Normally the primary should be restored here. Unfortunately this causes the
+ * GetSurfaceDesc call after the next display mode change to crash on the Windows 8
+ * testbot. Another Restore call would presumably avoid the crash, but it also moots
+ * the point of the GetSurfaceDesc call. */
+
PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE);
expect_messages = exclusive_messages;
screen_size.cx = 0;
@@ -2299,7 +2340,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
todo_wine ok(screen_size.cx == registry_mode.dmPelsWidth
&& screen_size.cy == registry_mode.dmPelsHeight,
@@ -2385,7 +2426,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2409,7 +2450,7 @@ static void test_coop_level_mode_set(void)
}
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2453,7 +2494,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2548,7 +2589,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2565,7 +2606,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2609,7 +2650,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 334d89e..537de81 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -361,12 +361,26 @@ static void destroy_material(IDirect3DMaterial2 *material)
IDirect3DMaterial2_Release(material);
}
-static const UINT *expect_messages;
+struct message
+{
+ UINT message;
+ BOOL check_wparam;
+ WPARAM expect_wparam;
+};
+
+static const struct message *expect_messages;
static LRESULT CALLBACK test_proc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
- if (expect_messages && message == *expect_messages)
+ if (expect_messages && message == expect_messages->message)
+ {
+ if (expect_messages->check_wparam)
+ ok (wparam == expect_messages->expect_wparam,
+ "Got unexpected wparam %lx for message %x, expected %lx.\n",
+ wparam, message, expect_messages->expect_wparam);
+
++expect_messages;
+ }
return DefWindowProcA(hwnd, message, wparam, lparam);
}
@@ -2066,15 +2080,15 @@ static void test_wndproc(void)
HRESULT hr;
ULONG ref;
- static const UINT messages[] =
+ static struct message messages[] =
{
- WM_WINDOWPOSCHANGING,
- WM_MOVE,
- WM_SIZE,
- WM_WINDOWPOSCHANGING,
- WM_ACTIVATE,
- WM_SETFOCUS,
- 0,
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_MOVE, FALSE, 0},
+ {WM_SIZE, FALSE, 0},
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_ACTIVATE, FALSE, 0},
+ {WM_SETFOCUS, FALSE, 0},
+ {0, FALSE, 0},
};
/* DDSCL_EXCLUSIVE replaces the window's window proc. */
@@ -2094,7 +2108,7 @@ static void test_wndproc(void)
expect_messages = messages;
hr = IDirectDraw2_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
proc = GetWindowLongPtrA(window, GWLP_WNDPROC);
ok(proc != (LONG_PTR)test_proc, "Expected wndproc != %#lx, got %#lx.\n",
@@ -2346,19 +2360,34 @@ static void test_coop_level_mode_set(void)
BOOL ret;
LONG change_ret;
- static const UINT exclusive_messages[] =
+ static const struct message exclusive_messages[] =
{
- WM_WINDOWPOSCHANGING,
- WM_WINDOWPOSCHANGED,
- WM_SIZE,
- WM_DISPLAYCHANGE,
- 0,
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_WINDOWPOSCHANGED, FALSE, 0},
+ {WM_SIZE, FALSE, 0},
+ {WM_DISPLAYCHANGE, FALSE, 0},
+ {0, FALSE, 0},
+ };
+ static const struct message exclusive_focus_loss_messages[] =
+ {
+ {WM_ACTIVATE, TRUE, WA_INACTIVE},
+ /*{WM_DISPLAYCHANGE, FALSE, 0}, Not yet implemented on Wine. */
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ /* Like d3d8 and d3d9 ddraw seems to use SW_SHOWMINIMIZED instead of
+ * SW_MINIMIZED, causing a recursive window activation that does not
+ * produe the same result in Wine yet. Ignore the difference for now.
+ * {WM_ACTIVATE, TRUE, 0x200000 | WA_ACTIVE}, */
+ {WM_WINDOWPOSCHANGED, FALSE, 0},
+ {WM_MOVE, FALSE, 0},
+ {WM_SIZE, TRUE, SIZE_MINIMIZED},
+ {WM_ACTIVATEAPP, TRUE, FALSE},
+ {0, FALSE, 0},
};
- static const UINT normal_messages[] =
+ static const struct message normal_messages[] =
{
- WM_DISPLAYCHANGE,
- 0,
+ {WM_DISPLAYCHANGE, FALSE, 0},
+ {0, FALSE, 0},
};
ddraw = create_ddraw();
@@ -2438,7 +2467,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == param.ddraw_width && screen_size.cy == param.ddraw_height,
"Expected screen size %ux%u, got %ux%u.\n",
@@ -2484,7 +2513,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == param.user32_width && screen_size.cy == param.user32_height,
"Expected screen size %ux%u, got %ux%u.\n",
@@ -2495,6 +2524,18 @@ static void test_coop_level_mode_set(void)
user32_rect.left, user32_rect.top, user32_rect.right, user32_rect.bottom,
r.left, r.top, r.right, r.bottom);
+ expect_messages = exclusive_focus_loss_messages;
+ SetForegroundWindow(GetDesktopWindow());
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+
+ ShowWindow(window, SW_RESTORE);
+ hr = IDirectDraw2_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+ ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
+ /* Normally the primary should be restored here. Unfortunately this causes the
+ * GetSurfaceDesc call after the next display mode change to crash on the Windows 8
+ * testbot. Another Restore call would presumably avoid the crash, but it also moots
+ * the point of the GetSurfaceDesc call. */
+
PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE);
expect_messages = exclusive_messages;
screen_size.cx = 0;
@@ -2503,7 +2544,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw2_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
todo_wine ok(screen_size.cx == registry_mode.dmPelsWidth
&& screen_size.cy == registry_mode.dmPelsHeight,
@@ -2589,7 +2630,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2613,7 +2654,7 @@ static void test_coop_level_mode_set(void)
}
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2657,7 +2698,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2752,7 +2793,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2769,7 +2810,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2813,7 +2854,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw2_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2874,7 +2915,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw2_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == registry_mode.dmPelsWidth
&& screen_size.cy == registry_mode.dmPelsHeight,
@@ -2945,7 +2986,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw2_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n",
screen_size.cx, screen_size.cy);
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index ab03f39..80e155e 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -391,12 +391,26 @@ static void destroy_material(IDirect3DMaterial3 *material)
IDirect3DMaterial3_Release(material);
}
-static const UINT *expect_messages;
+struct message
+{
+ UINT message;
+ BOOL check_wparam;
+ WPARAM expect_wparam;
+};
+
+static const struct message *expect_messages;
static LRESULT CALLBACK test_proc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
- if (expect_messages && message == *expect_messages)
+ if (expect_messages && message == expect_messages->message)
+ {
+ if (expect_messages->check_wparam)
+ ok (wparam == expect_messages->expect_wparam,
+ "Got unexpected wparam %lx for message %x, expected %lx.\n",
+ wparam, message, expect_messages->expect_wparam);
+
++expect_messages;
+ }
return DefWindowProcA(hwnd, message, wparam, lparam);
}
@@ -2253,15 +2267,15 @@ static void test_wndproc(void)
HRESULT hr;
ULONG ref;
- static const UINT messages[] =
+ static struct message messages[] =
{
- WM_WINDOWPOSCHANGING,
- WM_MOVE,
- WM_SIZE,
- WM_WINDOWPOSCHANGING,
- WM_ACTIVATE,
- WM_SETFOCUS,
- 0,
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_MOVE, FALSE, 0},
+ {WM_SIZE, FALSE, 0},
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_ACTIVATE, FALSE, 0},
+ {WM_SETFOCUS, FALSE, 0},
+ {0, FALSE, 0},
};
/* DDSCL_EXCLUSIVE replaces the window's window proc. */
@@ -2281,7 +2295,7 @@ static void test_wndproc(void)
expect_messages = messages;
hr = IDirectDraw4_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
proc = GetWindowLongPtrA(window, GWLP_WNDPROC);
ok(proc != (LONG_PTR)test_proc, "Expected wndproc != %#lx, got %#lx.\n",
@@ -2533,19 +2547,34 @@ static void test_coop_level_mode_set(void)
BOOL ret;
LONG change_ret;
- static const UINT exclusive_messages[] =
+ static const struct message exclusive_messages[] =
{
- WM_WINDOWPOSCHANGING,
- WM_WINDOWPOSCHANGED,
- WM_SIZE,
- WM_DISPLAYCHANGE,
- 0,
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_WINDOWPOSCHANGED, FALSE, 0},
+ {WM_SIZE, FALSE, 0},
+ {WM_DISPLAYCHANGE, FALSE, 0},
+ {0, FALSE, 0},
+ };
+ static const struct message exclusive_focus_loss_messages[] =
+ {
+ {WM_ACTIVATE, TRUE, WA_INACTIVE},
+ /*{WM_DISPLAYCHANGE, FALSE, 0}, Not yet implemented on Wine. */
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ /* Like d3d8 and d3d9 ddraw seems to use SW_SHOWMINIMIZED instead of
+ * SW_MINIMIZED, causing a recursive window activation that does not
+ * produe the same result in Wine yet. Ignore the difference for now.
+ * {WM_ACTIVATE, TRUE, 0x200000 | WA_ACTIVE}, */
+ {WM_WINDOWPOSCHANGED, FALSE, 0},
+ {WM_MOVE, FALSE, 0},
+ {WM_SIZE, TRUE, SIZE_MINIMIZED},
+ {WM_ACTIVATEAPP, TRUE, FALSE},
+ {0, FALSE, 0},
};
- static const UINT normal_messages[] =
+ static const struct message normal_messages[] =
{
- WM_DISPLAYCHANGE,
- 0,
+ {WM_DISPLAYCHANGE, FALSE, 0},
+ {0, FALSE, 0},
};
ddraw = create_ddraw();
@@ -2625,7 +2654,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == param.ddraw_width && screen_size.cy == param.ddraw_height,
"Expected screen size %ux%u, got %ux%u.\n",
@@ -2671,7 +2700,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == param.user32_width && screen_size.cy == param.user32_height,
"Expected screen size %ux%u, got %ux%u.\n",
@@ -2682,6 +2711,18 @@ static void test_coop_level_mode_set(void)
user32_rect.left, user32_rect.top, user32_rect.right, user32_rect.bottom,
r.left, r.top, r.right, r.bottom);
+ expect_messages = exclusive_focus_loss_messages;
+ SetForegroundWindow(GetDesktopWindow());
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+
+ ShowWindow(window, SW_RESTORE);
+ hr = IDirectDraw4_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+ ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
+ /* Normally the primary should be restored here. Unfortunately this causes the
+ * GetSurfaceDesc call after the next display mode change to crash on the Windows 8
+ * testbot. Another Restore call would presumably avoid the crash, but it also moots
+ * the point of the GetSurfaceDesc call. */
+
PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE);
expect_messages = exclusive_messages;
screen_size.cx = 0;
@@ -2690,7 +2731,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw4_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
todo_wine ok(screen_size.cx == registry_mode.dmPelsWidth
&& screen_size.cy == registry_mode.dmPelsHeight,
@@ -2776,7 +2817,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2793,7 +2834,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2837,7 +2878,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw4_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2932,7 +2973,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2949,7 +2990,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2993,7 +3034,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw4_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -3054,7 +3095,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw4_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == registry_mode.dmPelsWidth
&& screen_size.cy == registry_mode.dmPelsHeight,
@@ -3125,7 +3166,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw4_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n",
screen_size.cx, screen_size.cy);
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index f505c65..88ce136 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -324,12 +324,26 @@ static IDirect3DDevice7 *create_device(HWND window, DWORD coop_level)
return device;
}
-static const UINT *expect_messages;
+struct message
+{
+ UINT message;
+ BOOL check_wparam;
+ WPARAM expect_wparam;
+};
+
+static const struct message *expect_messages;
static LRESULT CALLBACK test_proc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
- if (expect_messages && message == *expect_messages)
+ if (expect_messages && message == expect_messages->message)
+ {
+ if (expect_messages->check_wparam)
+ ok (wparam == expect_messages->expect_wparam,
+ "Got unexpected wparam %lx for message %x, expected %lx.\n",
+ wparam, message, expect_messages->expect_wparam);
+
++expect_messages;
+ }
return DefWindowProcA(hwnd, message, wparam, lparam);
}
@@ -1931,15 +1945,15 @@ static void test_wndproc(void)
HRESULT hr;
ULONG ref;
- static const UINT messages[] =
+ static struct message messages[] =
{
- WM_WINDOWPOSCHANGING,
- WM_MOVE,
- WM_SIZE,
- WM_WINDOWPOSCHANGING,
- WM_ACTIVATE,
- WM_SETFOCUS,
- 0,
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_MOVE, FALSE, 0},
+ {WM_SIZE, FALSE, 0},
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_ACTIVATE, FALSE, 0},
+ {WM_SETFOCUS, FALSE, 0},
+ {0, FALSE, 0},
};
/* DDSCL_EXCLUSIVE replaces the window's window proc. */
@@ -1959,7 +1973,7 @@ static void test_wndproc(void)
expect_messages = messages;
hr = IDirectDraw7_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
proc = GetWindowLongPtrA(window, GWLP_WNDPROC);
ok(proc != (LONG_PTR)test_proc, "Expected wndproc != %#lx, got %#lx.\n",
@@ -2210,19 +2224,34 @@ static void test_coop_level_mode_set(void)
BOOL ret;
LONG change_ret;
- static const UINT exclusive_messages[] =
+ static const struct message exclusive_messages[] =
{
- WM_WINDOWPOSCHANGING,
- WM_WINDOWPOSCHANGED,
- WM_SIZE,
- WM_DISPLAYCHANGE,
- 0,
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ {WM_WINDOWPOSCHANGED, FALSE, 0},
+ {WM_SIZE, FALSE, 0},
+ {WM_DISPLAYCHANGE, FALSE, 0},
+ {0, FALSE, 0},
+ };
+ static const struct message exclusive_focus_loss_messages[] =
+ {
+ {WM_ACTIVATE, TRUE, WA_INACTIVE},
+ /*{WM_DISPLAYCHANGE, FALSE, 0}, Not yet implemented on Wine. */
+ {WM_WINDOWPOSCHANGING, FALSE, 0},
+ /* Like d3d8 and d3d9 ddraw seems to use SW_SHOWMINIMIZED instead of
+ * SW_MINIMIZED, causing a recursive window activation that does not
+ * produe the same result in Wine yet. Ignore the difference for now.
+ * {WM_ACTIVATE, TRUE, 0x200000 | WA_ACTIVE}, */
+ {WM_WINDOWPOSCHANGED, FALSE, 0},
+ {WM_MOVE, FALSE, 0},
+ {WM_SIZE, TRUE, SIZE_MINIMIZED},
+ {WM_ACTIVATEAPP, TRUE, FALSE},
+ {0, FALSE, 0},
};
- static const UINT normal_messages[] =
+ static const struct message normal_messages[] =
{
- WM_DISPLAYCHANGE,
- 0,
+ {WM_DISPLAYCHANGE, FALSE, 0},
+ {0, FALSE, 0},
};
ddraw = create_ddraw();
@@ -2302,7 +2331,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == param.ddraw_width && screen_size.cy == param.ddraw_height,
"Expected screen size %ux%u, got %ux%u.\n",
@@ -2348,7 +2377,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == param.user32_width && screen_size.cy == param.user32_height,
"Expected screen size %ux%u, got %ux%u.\n",
@@ -2359,6 +2388,18 @@ static void test_coop_level_mode_set(void)
user32_rect.left, user32_rect.top, user32_rect.right, user32_rect.bottom,
r.left, r.top, r.right, r.bottom);
+ expect_messages = exclusive_focus_loss_messages;
+ SetForegroundWindow(GetDesktopWindow());
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+
+ ShowWindow(window, SW_RESTORE);
+ hr = IDirectDraw7_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+ ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
+ /* Normally the primary should be restored here. Unfortunately this causes the
+ * GetSurfaceDesc call after the next display mode change to crash on the Windows 8
+ * testbot. Another Restore call would presumably avoid the crash, but it also moots
+ * the point of the GetSurfaceDesc call. */
+
PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE);
expect_messages = exclusive_messages;
screen_size.cx = 0;
@@ -2367,7 +2408,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw7_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
todo_wine ok(screen_size.cx == registry_mode.dmPelsWidth
&& screen_size.cy == registry_mode.dmPelsHeight,
@@ -2453,7 +2494,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2470,7 +2511,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2514,7 +2555,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2609,7 +2650,7 @@ static void test_coop_level_mode_set(void)
change_ret = ChangeDisplaySettingsW(&devmode, CDS_FULLSCREEN);
ok(change_ret == DISP_CHANGE_SUCCESSFUL, "Failed to change display mode, ret %#x.\n", change_ret);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2626,7 +2667,7 @@ static void test_coop_level_mode_set(void)
hr = set_display_mode(ddraw, param.ddraw_width, param.ddraw_height);
ok(SUCCEEDED(hr), "Failed to set display mode, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2670,7 +2711,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw7_RestoreDisplayMode(ddraw);
ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n", screen_size.cx, screen_size.cy);
@@ -2731,7 +2772,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw7_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(screen_size.cx == registry_mode.dmPelsWidth
&& screen_size.cy == registry_mode.dmPelsHeight,
@@ -2802,7 +2843,7 @@ static void test_coop_level_mode_set(void)
hr = IDirectDraw7_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL);
ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
- ok(!*expect_messages, "Expected message %#x, but didn't receive it.\n", *expect_messages);
+ ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
expect_messages = NULL;
ok(!screen_size.cx && !screen_size.cy, "Got unexpected screen size %ux%u.\n",
screen_size.cx, screen_size.cy);
--
2.0.4
More information about the wine-patches
mailing list