Henri Verbeet : d3d8/tests: Check for multiple expected messages in test_wndproc().
Alexandre Julliard
julliard at winehq.org
Thu Nov 4 12:52:51 CDT 2010
Module: wine
Branch: master
Commit: 6632d2c45c33df79c2bbab8b9b423155df692161
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6632d2c45c33df79c2bbab8b9b423155df692161
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Thu Nov 4 10:37:30 2010 +0100
d3d8/tests: Check for multiple expected messages in test_wndproc().
---
dlls/d3d8/tests/device.c | 63 ++++++++++++++++++++++++++++++++++++++--------
1 files changed, 52 insertions(+), 11 deletions(-)
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
index a9ca496..2774b6a 100644
--- a/dlls/d3d8/tests/device.c
+++ b/dlls/d3d8/tests/device.c
@@ -1520,11 +1520,21 @@ cleanup:
}
static HWND filter_messages;
-static struct
+
+enum message_window
+{
+ DEVICE_WINDOW,
+ FOCUS_WINDOW,
+};
+
+struct message
{
- HWND window;
UINT message;
-} expect_message;
+ enum message_window window;
+};
+
+static const struct message *expect_messages;
+static HWND device_window, focus_window;
struct wndproc_thread_param
{
@@ -1541,7 +1551,27 @@ static LRESULT CALLBACK test_proc(HWND hwnd, UINT message, WPARAM wparam, LPARAM
todo_wine ok(0, "Received unexpected message %#x for window %p.\n", message, hwnd);
}
- if (expect_message.window == hwnd && expect_message.message == message) expect_message.message = 0;
+ if (expect_messages)
+ {
+ HWND w;
+
+ switch (expect_messages->window)
+ {
+ case DEVICE_WINDOW:
+ w = device_window;
+ break;
+
+ case FOCUS_WINDOW:
+ w = focus_window;
+ break;
+
+ default:
+ w = NULL;
+ break;
+ };
+
+ if (hwnd == w && expect_messages->message == message) ++expect_messages;
+ }
return DefWindowProcA(hwnd, message, wparam, lparam);
}
@@ -1580,7 +1610,6 @@ static DWORD WINAPI wndproc_thread(void *param)
static void test_wndproc(void)
{
struct wndproc_thread_param thread_params;
- HWND device_window, focus_window, tmp;
IDirect3DDevice8 *device;
WNDCLASSA wc = {0};
IDirect3D8 *d3d8;
@@ -1588,6 +1617,17 @@ static void test_wndproc(void)
LONG_PTR proc;
ULONG ref;
DWORD res, tid;
+ HWND tmp;
+
+ static const struct message messages[] =
+ {
+ {WM_ACTIVATE, FOCUS_WINDOW},
+ {WM_SETFOCUS, FOCUS_WINDOW},
+ {WM_WINDOWPOSCHANGING, DEVICE_WINDOW},
+ {WM_MOVE, DEVICE_WINDOW},
+ {WM_SIZE, DEVICE_WINDOW},
+ {0, 0},
+ };
if (!(d3d8 = pDirect3DCreate8(D3D_SDK_VERSION)))
{
@@ -1630,11 +1670,10 @@ static void test_wndproc(void)
ok(tmp == thread_params.dummy_window, "Expected foreground window %p, got %p.\n",
thread_params.dummy_window, tmp);
- expect_message.window = focus_window;
- expect_message.message = WM_SETFOCUS;
-
flush_events();
+ expect_messages = messages;
+
device = create_device(d3d8, device_window, focus_window, FALSE);
if (!device)
{
@@ -1642,8 +1681,10 @@ static void test_wndproc(void)
goto done;
}
- ok(!expect_message.message, "Expected message %#x for window %p, but didn't receive it.\n",
- expect_message.message, expect_message.window);
+ ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it.\n",
+ expect_messages->message, expect_messages->window);
+ expect_messages = NULL;
+
if (0) /* Disabled until we can make this work in a reliable way on Wine. */
{
tmp = GetFocus();
@@ -1717,7 +1758,6 @@ done:
static void test_wndproc_windowed(void)
{
struct wndproc_thread_param thread_params;
- HWND device_window, focus_window, tmp;
IDirect3DDevice8 *device;
WNDCLASSA wc = {0};
IDirect3D8 *d3d8;
@@ -1726,6 +1766,7 @@ static void test_wndproc_windowed(void)
HRESULT hr;
ULONG ref;
DWORD res, tid;
+ HWND tmp;
if (!(d3d8 = pDirect3DCreate8(D3D_SDK_VERSION)))
{
More information about the wine-cvs
mailing list