It's very unreliable; our window can receive messages not related to the ones
we're trying to test.
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/quartz/tests/videorenderer.c | 38 ++++++++++++++++++++++---------
dlls/quartz/tests/vmr7.c | 38 ++++++++++++++++++++++---------
dlls/quartz/tests/vmr9.c | 38 ++++++++++++++++++++++---------
3 files changed, 81 insertions(+), 33 deletions(-)
diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c
index f4d9660316c..b6d91f86859 100644
--- a/dlls/quartz/tests/videorenderer.c
+++ b/dlls/quartz/tests/videorenderer.c
@@ -2109,28 +2109,40 @@ static void test_video_window_messages(IVideoWindow *window, HWND hwnd, HWND our
flush_events();
+ /* Demonstrate that messages should be sent, not posted, and that only some
+ * messages should be forwarded. A previous implementation unconditionally
+ * posted all messages. */
+
hr = IVideoWindow_NotifyOwnerMessage(window, (OAHWND)our_hwnd, WM_SYSCOLORCHANGE, 0, 0);
ok(hr == S_OK, "Got hr %#x.\n", hr);
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(!ret, "Got unexpected status %#x.\n", ret);
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_SYSCOLORCHANGE, "WM_SYSCOLORCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
- hr = IVideoWindow_NotifyOwnerMessage(window, (OAHWND)our_hwnd, WM_SETCURSOR,
- (WPARAM)hwnd, MAKELONG(HTCLIENT, WM_MOUSEMOVE));
+ hr = IVideoWindow_NotifyOwnerMessage(window, (OAHWND)our_hwnd, WM_FONTCHANGE, 0, 0);
ok(hr == S_OK, "Got hr %#x.\n", hr);
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(!ret, "Got unexpected status %#x.\n", ret);
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_FONTCHANGE, "WM_FONTCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
params.window = window;
params.hwnd = our_hwnd;
params.message = WM_SYSCOLORCHANGE;
thread = CreateThread(NULL, 0, notify_message_proc, ¶ms, 0, NULL);
ok(WaitForSingleObject(thread, 100) == WAIT_TIMEOUT, "Thread should block.\n");
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(ret == ((QS_SENDMESSAGE << 16) | QS_SENDMESSAGE), "Got unexpected status %#x.\n", ret);
- while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_SYSCOLORCHANGE, "WM_SYSCOLORCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
+
ok(!WaitForSingleObject(thread, 1000), "Wait timed out.\n");
CloseHandle(thread);
@@ -2138,8 +2150,12 @@ static void test_video_window_messages(IVideoWindow *window, HWND hwnd, HWND our
thread = CreateThread(NULL, 0, notify_message_proc, ¶ms, 0, NULL);
ok(!WaitForSingleObject(thread, 1000), "Thread should not block.\n");
CloseHandle(thread);
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(!ret, "Got unexpected status %#x.\n", ret);
+
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_FONTCHANGE, "WM_FONTCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
hr = IVideoWindow_put_Owner(window, 0);
ok(hr == S_OK, "Got hr %#x.\n", hr);
diff --git a/dlls/quartz/tests/vmr7.c b/dlls/quartz/tests/vmr7.c
index 212ce213e89..1394d81a2ce 100644
--- a/dlls/quartz/tests/vmr7.c
+++ b/dlls/quartz/tests/vmr7.c
@@ -2094,28 +2094,40 @@ static void test_video_window_messages(IVideoWindow *window, HWND hwnd, HWND our
flush_events();
+ /* Demonstrate that messages should be sent, not posted, and that only some
+ * messages should be forwarded. A previous implementation unconditionally
+ * posted all messages. */
+
hr = IVideoWindow_NotifyOwnerMessage(window, (OAHWND)our_hwnd, WM_SYSCOLORCHANGE, 0, 0);
ok(hr == S_OK, "Got hr %#x.\n", hr);
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(!ret, "Got unexpected status %#x.\n", ret);
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_SYSCOLORCHANGE, "WM_SYSCOLORCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
- hr = IVideoWindow_NotifyOwnerMessage(window, (OAHWND)our_hwnd, WM_SETCURSOR,
- (WPARAM)hwnd, MAKELONG(HTCLIENT, WM_MOUSEMOVE));
+ hr = IVideoWindow_NotifyOwnerMessage(window, (OAHWND)our_hwnd, WM_FONTCHANGE, 0, 0);
ok(hr == S_OK, "Got hr %#x.\n", hr);
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(!ret, "Got unexpected status %#x.\n", ret);
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_FONTCHANGE, "WM_FONTCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
params.window = window;
params.hwnd = our_hwnd;
params.message = WM_SYSCOLORCHANGE;
thread = CreateThread(NULL, 0, notify_message_proc, ¶ms, 0, NULL);
ok(WaitForSingleObject(thread, 100) == WAIT_TIMEOUT, "Thread should block.\n");
- ret = MsgWaitForMultipleObjects(0, NULL, FALSE, 1000, QS_SENDMESSAGE);
- ok(!ret, "Did not find a sent message.\n");
- while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_SYSCOLORCHANGE, "WM_SYSCOLORCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
+
ok(!WaitForSingleObject(thread, 1000), "Wait timed out.\n");
CloseHandle(thread);
@@ -2123,8 +2135,12 @@ static void test_video_window_messages(IVideoWindow *window, HWND hwnd, HWND our
thread = CreateThread(NULL, 0, notify_message_proc, ¶ms, 0, NULL);
ok(!WaitForSingleObject(thread, 1000), "Thread should not block.\n");
CloseHandle(thread);
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(!ret, "Got unexpected status %#x.\n", ret);
+
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_FONTCHANGE, "WM_FONTCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
hr = IVideoWindow_put_Owner(window, 0);
ok(hr == S_OK, "Got hr %#x.\n", hr);
diff --git a/dlls/quartz/tests/vmr9.c b/dlls/quartz/tests/vmr9.c
index 44b9a453305..f3365bd02d0 100644
--- a/dlls/quartz/tests/vmr9.c
+++ b/dlls/quartz/tests/vmr9.c
@@ -2333,28 +2333,40 @@ static void test_video_window_messages(IVideoWindow *window, HWND hwnd, HWND our
flush_events();
+ /* Demonstrate that messages should be sent, not posted, and that only some
+ * messages should be forwarded. A previous implementation unconditionally
+ * posted all messages. */
+
hr = IVideoWindow_NotifyOwnerMessage(window, (OAHWND)our_hwnd, WM_SYSCOLORCHANGE, 0, 0);
ok(hr == S_OK, "Got hr %#x.\n", hr);
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(!ret, "Got unexpected status %#x.\n", ret);
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_SYSCOLORCHANGE, "WM_SYSCOLORCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
- hr = IVideoWindow_NotifyOwnerMessage(window, (OAHWND)our_hwnd, WM_SETCURSOR,
- (WPARAM)hwnd, MAKELONG(HTCLIENT, WM_MOUSEMOVE));
+ hr = IVideoWindow_NotifyOwnerMessage(window, (OAHWND)our_hwnd, WM_FONTCHANGE, 0, 0);
ok(hr == S_OK, "Got hr %#x.\n", hr);
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(!ret, "Got unexpected status %#x.\n", ret);
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_FONTCHANGE, "WM_FONTCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
params.window = window;
params.hwnd = our_hwnd;
params.message = WM_SYSCOLORCHANGE;
thread = CreateThread(NULL, 0, notify_message_proc, ¶ms, 0, NULL);
ok(WaitForSingleObject(thread, 100) == WAIT_TIMEOUT, "Thread should block.\n");
- ret = MsgWaitForMultipleObjects(0, NULL, FALSE, 1000, QS_SENDMESSAGE);
- ok(!ret, "Did not find a sent message.\n");
- while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_SYSCOLORCHANGE, "WM_SYSCOLORCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
+
ok(!WaitForSingleObject(thread, 1000), "Wait timed out.\n");
CloseHandle(thread);
@@ -2362,8 +2374,12 @@ static void test_video_window_messages(IVideoWindow *window, HWND hwnd, HWND our
thread = CreateThread(NULL, 0, notify_message_proc, ¶ms, 0, NULL);
ok(!WaitForSingleObject(thread, 1000), "Thread should not block.\n");
CloseHandle(thread);
- ret = GetQueueStatus(QS_SENDMESSAGE | QS_POSTMESSAGE);
- ok(!ret, "Got unexpected status %#x.\n", ret);
+
+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ ok(msg.message != WM_FONTCHANGE, "WM_FONTCHANGE should not be posted.\n");
+ DispatchMessageA(&msg);
+ }
hr = IVideoWindow_put_Owner(window, 0);
ok(hr == S_OK, "Got hr %#x.\n", hr);
--
2.30.2