From cc1292a1ac7faf8eb7e7fa89870eb46cf4b3db88 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 21 Nov 2014 17:00:52 +0100 Subject: [PATCH] Removed several patches (accepted upstream). --- README.md | 5 +- debian/changelog | 2 + patches/Makefile | 38 --- ...d-tests-for-CoWaitForMultipleHandles.patch | 255 ------------------ ...uments-for-CoWaitForMultipleHandles-.patch | 112 -------- ...ess-window-events-when-APC-calls-are.patch | 52 ---- .../ole32-CoWaitForMultipleHandles/definition | 1 - ...-interthread-tests-for-calling-ShowW.patch | 61 ----- ...ll-SendMessage-to-hide-a-window-that.patch | 40 --- patches/user32-ShowWindow/definition | 1 - 10 files changed, 4 insertions(+), 563 deletions(-) delete mode 100644 patches/ole32-CoWaitForMultipleHandles/0001-ole32-tests-Add-tests-for-CoWaitForMultipleHandles.patch delete mode 100644 patches/ole32-CoWaitForMultipleHandles/0002-ole32-Verify-arguments-for-CoWaitForMultipleHandles-.patch delete mode 100644 patches/ole32-CoWaitForMultipleHandles/0003-ole32-Don-t-process-window-events-when-APC-calls-are.patch delete mode 100644 patches/ole32-CoWaitForMultipleHandles/definition delete mode 100644 patches/user32-ShowWindow/0001-user32-tests-Add-interthread-tests-for-calling-ShowW.patch delete mode 100644 patches/user32-ShowWindow/0002-user32-Do-not-call-SendMessage-to-hide-a-window-that.patch delete mode 100644 patches/user32-ShowWindow/definition diff --git a/README.md b/README.md index 3dbea009..8bd1b460 100644 --- a/README.md +++ b/README.md @@ -39,10 +39,9 @@ Wine. All those differences are also documented on the Included bug fixes and improvements =================================== -**Bugfixes and features included in the next upcoming release [3]:** +**Bugfixes and features included in the next upcoming release [2]:** * Implement exclusive mode in PulseAudio backend ([Wine Bug #37042](https://bugs.winehq.org/show_bug.cgi?id=37042)) -* ShowWindow should avoid interthread no-op messages ([Wine Bug #11582](https://bugs.winehq.org/show_bug.cgi?id=11582)) * Take abs() of vertex z coordinate as FFP fog coordinate @@ -59,7 +58,7 @@ Included bug fixes and improvements * Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](https://bugs.winehq.org/show_bug.cgi?id=30639)) * Avoid crashing when broken app tries to release surface although refcount is zero ([Wine Bug #18477](https://bugs.winehq.org/show_bug.cgi?id=18477)) * ~~Avoid sending window messages in FindWindowExW~~ ([Wine Bug #27282](https://bugs.winehq.org/show_bug.cgi?id=27282)) -* CoWaitForMultipleHandles shouldn't process window events when APC calls are queued ([Wine Bug #32568](https://bugs.winehq.org/show_bug.cgi?id=32568)) +* ~~CoWaitForMultipleHandles shouldn't process window events when APC calls are queued~~ ([Wine Bug #32568](https://bugs.winehq.org/show_bug.cgi?id=32568)) * Correctly treat '.' when checking for empty directories ([Wine Bug #26272](https://bugs.winehq.org/show_bug.cgi?id=26272)) * D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770)) * Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436)) diff --git a/debian/changelog b/debian/changelog index 3411583b..798b0c96 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,8 @@ wine-compholio (1.7.32) UNRELEASED; urgency=low * Removed patch to close server fd is there is no space in thread inflight fd list (accepted upstream). * Removed patch to fix bugs in StrStr functions (accepted upstream). * Removed patches to avoid sending messages in FindWindowExW (accepted upstream). + * Removed patch to fix implementation ofCoWaitForMultipleHandles (accepted upstream). + * Removed patch to avoid interthread no-op messages in ShowWindow (accepted upstream). -- Sebastian Lackner Sat, 15 Nov 2014 20:21:53 +0100 wine-compholio (1.7.31) unstable; urgency=low diff --git a/patches/Makefile b/patches/Makefile index 432085f5..771f53e4 100644 --- a/patches/Makefile +++ b/patches/Makefile @@ -75,7 +75,6 @@ PATCHLIST := \ ntoskrnl-KeSetSystemAffinityThread.ok \ ntoskrnl-Stub_FileObject.ok \ ntoskrnl-Write_CR4.ok \ - ole32-CoWaitForMultipleHandles.ok \ quartz-MediaSeeking_Positions.ok \ riched20-IText_Interface.ok \ secur32-Schannel_ContextAttr.ok \ @@ -100,7 +99,6 @@ PATCHLIST := \ user32-DrawTextExW.ok \ user32-GetSystemMetrics.ok \ user32-GetTipText.ok \ - user32-ShowWindow.ok \ user32-WndProc.ok \ wine.inf-ProductId.ok \ wineboot-HKEY_DYN_DATA.ok \ @@ -1106,25 +1104,6 @@ ntoskrnl-Write_CR4.ok: echo '+ { "Stefan Leichter", "ntoskrnl.exe: Emulate write to CR4 register.", 1 },'; \ ) > ntoskrnl-Write_CR4.ok -# Patchset ole32-CoWaitForMultipleHandles -# | -# | This patchset fixes the following Wine bugs: -# | * [#32568] CoWaitForMultipleHandles shouldn't process window events when APC calls are queued -# | -# | Modified files: -# | * dlls/ole32/compobj.c, dlls/ole32/tests/compobj.c, include/objbase.h -# | -.INTERMEDIATE: ole32-CoWaitForMultipleHandles.ok -ole32-CoWaitForMultipleHandles.ok: - $(call APPLY_FILE,ole32-CoWaitForMultipleHandles/0001-ole32-tests-Add-tests-for-CoWaitForMultipleHandles.patch) - $(call APPLY_FILE,ole32-CoWaitForMultipleHandles/0002-ole32-Verify-arguments-for-CoWaitForMultipleHandles-.patch) - $(call APPLY_FILE,ole32-CoWaitForMultipleHandles/0003-ole32-Don-t-process-window-events-when-APC-calls-are.patch) - @( \ - echo '+ { "Sebastian Lackner", "ole32/tests: Add tests for CoWaitForMultipleHandles.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ole32: Verify arguments for CoWaitForMultipleHandles, always initialize index to zero.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ole32: Don'\''t process window events when APC calls are queued.", 1 },'; \ - ) > ole32-CoWaitForMultipleHandles.ok - # Patchset quartz-MediaSeeking_Positions # | # | This patchset fixes the following Wine bugs: @@ -1531,23 +1510,6 @@ user32-GetTipText.ok: echo '+ { "Erich E. Hoover", "Fix TOOLTIPS_GetTipText when a NULL instance is used.", 1 },'; \ ) > user32-GetTipText.ok -# Patchset user32-ShowWindow -# | -# | This patchset fixes the following Wine bugs: -# | * [#11582] ShowWindow should avoid interthread no-op messages -# | -# | Modified files: -# | * dlls/user32/tests/msg.c, dlls/user32/winpos.c -# | -.INTERMEDIATE: user32-ShowWindow.ok -user32-ShowWindow.ok: - $(call APPLY_FILE,user32-ShowWindow/0001-user32-tests-Add-interthread-tests-for-calling-ShowW.patch) - $(call APPLY_FILE,user32-ShowWindow/0002-user32-Do-not-call-SendMessage-to-hide-a-window-that.patch) - @( \ - echo '+ { "Drew Ronneberg", "user32/tests: Add interthread tests for calling ShowWindow(SW_HIDE) on a hidden window.", 1 },'; \ - echo '+ { "Drew Ronneberg", "user32: Do not call SendMessage() to hide a window that is already hidden.", 3 },'; \ - ) > user32-ShowWindow.ok - # Patchset user32-WndProc # | # | This patchset fixes the following Wine bugs: diff --git a/patches/ole32-CoWaitForMultipleHandles/0001-ole32-tests-Add-tests-for-CoWaitForMultipleHandles.patch b/patches/ole32-CoWaitForMultipleHandles/0001-ole32-tests-Add-tests-for-CoWaitForMultipleHandles.patch deleted file mode 100644 index fdb61a48..00000000 --- a/patches/ole32-CoWaitForMultipleHandles/0001-ole32-tests-Add-tests-for-CoWaitForMultipleHandles.patch +++ /dev/null @@ -1,255 +0,0 @@ -From 31d234ff3ce4c423b939a7d1dd91f40bc4654a10 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Wed, 5 Nov 2014 00:35:06 +0100 -Subject: ole32/tests: Add tests for CoWaitForMultipleHandles. - -Unfortunately times out on Windows 8? ---- - dlls/ole32/tests/compobj.c | 197 +++++++++++++++++++++++++++++++++++++++++++++ - include/objbase.h | 3 +- - 2 files changed, 199 insertions(+), 1 deletion(-) - -diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c -index 1dfa9fb..de4c64f 100644 ---- a/dlls/ole32/tests/compobj.c -+++ b/dlls/ole32/tests/compobj.c -@@ -31,6 +31,7 @@ - #include "objbase.h" - #include "shlguid.h" - #include "urlmon.h" /* for CLSID_FileProtocol */ -+#include "dde.h" - - #include "ctxtcall.h" - -@@ -2034,6 +2035,7 @@ static void test_CoInitializeEx(void) - /* Cleanup */ - CoUninitialize(); - OleUninitialize(); -+ OleUninitialize(); - } - - static void test_OleRegGetMiscStatus(void) -@@ -2088,6 +2090,200 @@ static void test_CoCreateGuid(void) - ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); - } - -+static void CALLBACK apc_test_proc(ULONG_PTR param) -+{ -+ /* nothing */ -+} -+ -+static void test_CoWaitForMultipleHandles(void) -+{ -+ static const char cls_name[] = "cowait_test_class"; -+ HANDLE handles[2]; -+ WNDCLASSEXA wc; -+ BOOL success; -+ DWORD index; -+ HRESULT hr; -+ HWND hWnd; -+ MSG msg; -+ -+ hr = pCoInitializeEx(NULL, COINIT_APARTMENTTHREADED); -+ ok(hr == S_OK, "CoInitializeEx failed with error 0x%08x\n", hr); -+ -+ memset(&wc, 0, sizeof(wc)); -+ wc.cbSize = sizeof(wc); -+ wc.style = CS_VREDRAW | CS_HREDRAW; -+ wc.hInstance = GetModuleHandleA(0); -+ wc.hCursor = LoadCursorA(NULL, (LPCSTR)IDC_ARROW); -+ wc.hbrBackground = NULL; -+ wc.lpszClassName = cls_name; -+ wc.lpfnWndProc = DefWindowProcA; -+ success = RegisterClassExA(&wc) != 0; -+ ok(success, "RegisterClassExA failed %u\n", GetLastError()); -+ -+ hWnd = CreateWindowExA(0, cls_name, "Test", WS_TILEDWINDOW, 0, 0, 640, 480, 0, 0, 0, 0); -+ ok(hWnd != 0, "CreateWindowExA failed %u\n", GetLastError()); -+ handles[0] = CreateSemaphoreA(NULL, 1, 1, NULL); -+ ok(handles[0] != 0, "CreateSemaphoreA failed %u\n", GetLastError()); -+ handles[1] = CreateSemaphoreA(NULL, 1, 1, NULL); -+ ok(handles[1] != 0, "CreateSemaphoreA failed %u\n", GetLastError()); -+ -+ /* test without flags */ -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(0, 50, 0, NULL, &index); -+ todo_wine -+ ok(hr == E_INVALIDARG, "expected hr E_INVALIDARG, got 0x%08x\n", hr); -+ todo_wine -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ todo_wine -+ ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); -+ -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(0, 50, 0, handles, NULL); -+ todo_wine -+ ok(hr == E_INVALIDARG, "expected hr E_INVALIDARG, got 0x%08x\n", hr); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ todo_wine -+ ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(0, 50, 0, handles, &index); -+ todo_wine -+ ok(hr == RPC_E_NO_SYNC, "expected hr RPC_E_NO_SYNC, got 0x%08x\n", hr); -+ todo_wine -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ todo_wine -+ ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(0, 50, 1, handles, &index); -+ ok(hr == S_OK, "expected hr S_OK, got 0x%08x\n", hr); -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index); -+ ok(hr == S_OK, "expected hr S_OK, got 0x%08x\n", hr); -+ ok(index == 1, "expected index 1, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index); -+ ok(hr == RPC_S_CALLPENDING, "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -+ todo_wine -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n"); -+ -+ ReleaseSemaphore(handles[0], 1, NULL); -+ ReleaseSemaphore(handles[1], 1, NULL); -+ -+ /* test with COWAIT_WAITALL */ -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(COWAIT_WAITALL, 50, 2, handles, &index); -+ ok(hr == S_OK, "expected hr S_OK, got 0x%08x\n", hr); -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index); -+ ok(hr == RPC_S_CALLPENDING, "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -+ todo_wine -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n"); -+ -+ ReleaseSemaphore(handles[0], 1, NULL); -+ ReleaseSemaphore(handles[1], 1, NULL); -+ -+ /* test with COWAIT_ALERTABLE */ -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(COWAIT_ALERTABLE, 50, 1, handles, &index); -+ ok(hr == S_OK, "expected hr S_OK, got 0x%08x\n", hr); -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(COWAIT_ALERTABLE, 50, 2, handles, &index); -+ ok(hr == S_OK, "expected hr S_OK, got 0x%08x\n", hr); -+ ok(index == 1, "expected index 1, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ hr = CoWaitForMultipleHandles(COWAIT_ALERTABLE, 50, 2, handles, &index); -+ ok(hr == RPC_S_CALLPENDING, "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -+ todo_wine -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n"); -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ success = QueueUserAPC(apc_test_proc, GetCurrentThread(), 0); -+ ok(success, "QueueUserAPC failed %u\n", GetLastError()); -+ hr = CoWaitForMultipleHandles(COWAIT_ALERTABLE, 50, 2, handles, &index); -+ ok(hr == S_OK, "expected hr S_OK, got 0x%08x\n", hr); -+ ok(index == WAIT_IO_COMPLETION, "expected index WAIT_IO_COMPLETION, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ todo_wine -+ ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); -+ -+ /* test with COWAIT_INPUTAVAILABLE -+ * (Semaphores are still locked by previous test) */ -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_NOREMOVE); -+ ok(success, "PeekMessageA returned FALSE\n"); -+ hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index); -+ ok(hr == RPC_S_CALLPENDING, "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -+ todo_wine -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n"); -+ -+ index = 0xdeadbeef; -+ PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_NOREMOVE); -+ ok(success, "PeekMessageA returned FALSE\n"); -+ hr = CoWaitForMultipleHandles(COWAIT_INPUTAVAILABLE, 50, 2, handles, &index); -+ ok(hr == RPC_S_CALLPENDING || broken(hr == E_INVALIDARG), -+ "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -+ todo_wine -+ ok(index == 0, "expected index 0, got %u\n", index); -+ success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -+ ok(!success || broken(hr == E_INVALIDARG && success), -+ "CoWaitForMultipleHandles didn't pump any messages\n"); -+ -+ CloseHandle(handles[0]); -+ CloseHandle(handles[1]); -+ DestroyWindow(hWnd); -+ -+ success = UnregisterClassA(cls_name, GetModuleHandleA(0)); -+ ok(success, "UnregisterClass failed %u\n", GetLastError()); -+ -+ CoUninitialize(); -+} -+ - static void init_funcs(void) - { - HMODULE hOle32 = GetModuleHandleA("ole32"); -@@ -2148,4 +2344,5 @@ START_TEST(compobj) - test_CoInitializeEx(); - test_OleRegGetMiscStatus(); - test_CoCreateGuid(); -+ test_CoWaitForMultipleHandles(); - } -diff --git a/include/objbase.h b/include/objbase.h -index e1e45c9..c1a6f3c 100644 ---- a/include/objbase.h -+++ b/include/objbase.h -@@ -381,7 +381,8 @@ HRESULT WINAPI CoRegisterChannelHook(REFGUID ExtensionGuid, IChannelHook *pChann - typedef enum tagCOWAIT_FLAGS - { - COWAIT_WAITALL = 0x00000001, -- COWAIT_ALERTABLE = 0x00000002 -+ COWAIT_ALERTABLE = 0x00000002, -+ COWAIT_INPUTAVAILABLE = 0x00000004 - } COWAIT_FLAGS; - - HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags,DWORD dwTimeout,ULONG cHandles,LPHANDLE pHandles,LPDWORD lpdwindex); --- -2.1.3 - diff --git a/patches/ole32-CoWaitForMultipleHandles/0002-ole32-Verify-arguments-for-CoWaitForMultipleHandles-.patch b/patches/ole32-CoWaitForMultipleHandles/0002-ole32-Verify-arguments-for-CoWaitForMultipleHandles-.patch deleted file mode 100644 index 739b33cd..00000000 --- a/patches/ole32-CoWaitForMultipleHandles/0002-ole32-Verify-arguments-for-CoWaitForMultipleHandles-.patch +++ /dev/null @@ -1,112 +0,0 @@ -From ed866ac6a70e8309ea539b0f4bb03a0a7d73029f Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Wed, 5 Nov 2014 00:39:51 +0100 -Subject: ole32: Verify arguments for CoWaitForMultipleHandles, always - initialize index to zero. - ---- - dlls/ole32/compobj.c | 11 +++++++++++ - dlls/ole32/tests/compobj.c | 13 ------------- - 2 files changed, 11 insertions(+), 13 deletions(-) - -diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c -index 1fab04f..1d9b943 100644 ---- a/dlls/ole32/compobj.c -+++ b/dlls/ole32/compobj.c -@@ -4431,6 +4431,17 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout, - TRACE("(0x%08x, 0x%08x, %d, %p, %p)\n", dwFlags, dwTimeout, cHandles, - pHandles, lpdwindex); - -+ if (!lpdwindex) -+ return E_INVALIDARG; -+ -+ *lpdwindex = 0; -+ -+ if (!pHandles) -+ return E_INVALIDARG; -+ -+ if (!cHandles) -+ return RPC_E_NO_SYNC; -+ - while (TRUE) - { - DWORD now = GetTickCount(); -diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c -index de4c64f..8b864bf 100644 ---- a/dlls/ole32/tests/compobj.c -+++ b/dlls/ole32/tests/compobj.c -@@ -2132,31 +2132,23 @@ static void test_CoWaitForMultipleHandles(void) - index = 0xdeadbeef; - PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); - hr = CoWaitForMultipleHandles(0, 50, 0, NULL, &index); -- todo_wine - ok(hr == E_INVALIDARG, "expected hr E_INVALIDARG, got 0x%08x\n", hr); -- todo_wine - ok(index == 0, "expected index 0, got %u\n", index); - success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -- todo_wine - ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); - - PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); - hr = CoWaitForMultipleHandles(0, 50, 0, handles, NULL); -- todo_wine - ok(hr == E_INVALIDARG, "expected hr E_INVALIDARG, got 0x%08x\n", hr); - success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -- todo_wine - ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); - - index = 0xdeadbeef; - PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); - hr = CoWaitForMultipleHandles(0, 50, 0, handles, &index); -- todo_wine - ok(hr == RPC_E_NO_SYNC, "expected hr RPC_E_NO_SYNC, got 0x%08x\n", hr); -- todo_wine - ok(index == 0, "expected index 0, got %u\n", index); - success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -- todo_wine - ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); - - index = 0xdeadbeef; -@@ -2179,7 +2171,6 @@ static void test_CoWaitForMultipleHandles(void) - PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); - hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index); - ok(hr == RPC_S_CALLPENDING, "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -- todo_wine - ok(index == 0, "expected index 0, got %u\n", index); - success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); - ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n"); -@@ -2201,7 +2192,6 @@ static void test_CoWaitForMultipleHandles(void) - PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); - hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index); - ok(hr == RPC_S_CALLPENDING, "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -- todo_wine - ok(index == 0, "expected index 0, got %u\n", index); - success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); - ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n"); -@@ -2231,7 +2221,6 @@ static void test_CoWaitForMultipleHandles(void) - PostMessageA(hWnd, WM_DDE_FIRST, 0, 0); - hr = CoWaitForMultipleHandles(COWAIT_ALERTABLE, 50, 2, handles, &index); - ok(hr == RPC_S_CALLPENDING, "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -- todo_wine - ok(index == 0, "expected index 0, got %u\n", index); - success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); - ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n"); -@@ -2256,7 +2245,6 @@ static void test_CoWaitForMultipleHandles(void) - ok(success, "PeekMessageA returned FALSE\n"); - hr = CoWaitForMultipleHandles(0, 50, 2, handles, &index); - ok(hr == RPC_S_CALLPENDING, "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -- todo_wine - ok(index == 0, "expected index 0, got %u\n", index); - success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); - ok(!success, "CoWaitForMultipleHandles didn't pump any messages\n"); -@@ -2268,7 +2256,6 @@ static void test_CoWaitForMultipleHandles(void) - hr = CoWaitForMultipleHandles(COWAIT_INPUTAVAILABLE, 50, 2, handles, &index); - ok(hr == RPC_S_CALLPENDING || broken(hr == E_INVALIDARG), - "expected hr RPC_S_CALLPENDING, got 0x%08x\n", hr); -- todo_wine - ok(index == 0, "expected index 0, got %u\n", index); - success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); - ok(!success || broken(hr == E_INVALIDARG && success), --- -2.1.3 - diff --git a/patches/ole32-CoWaitForMultipleHandles/0003-ole32-Don-t-process-window-events-when-APC-calls-are.patch b/patches/ole32-CoWaitForMultipleHandles/0003-ole32-Don-t-process-window-events-when-APC-calls-are.patch deleted file mode 100644 index 4dfbbd4c..00000000 --- a/patches/ole32-CoWaitForMultipleHandles/0003-ole32-Don-t-process-window-events-when-APC-calls-are.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 2c0d07adf0da9d822938c5759c052ed0dc7e2b53 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Wed, 5 Nov 2014 00:49:59 +0100 -Subject: ole32: Don't process window events when APC calls are queued. - ---- - dlls/ole32/compobj.c | 16 +++++++++++++--- - dlls/ole32/tests/compobj.c | 1 - - 2 files changed, 13 insertions(+), 4 deletions(-) - -diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c -index 1d9b943..f4c3c26 100644 ---- a/dlls/ole32/compobj.c -+++ b/dlls/ole32/compobj.c -@@ -4460,9 +4460,19 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout, - - TRACE("waiting for rpc completion or window message\n"); - -- res = MsgWaitForMultipleObjectsEx(cHandles, pHandles, -- (dwTimeout == INFINITE) ? INFINITE : start_time + dwTimeout - now, -- QS_SENDMESSAGE | QS_ALLPOSTMESSAGE | QS_PAINT, wait_flags); -+ /* MsgWaitForMultipleObjectsEx will always process Window messages, even when an -+ * APC call is queued. We work around that by checking for APC calls manually first */ -+ -+ res = WAIT_TIMEOUT; -+ -+ if (dwFlags & COWAIT_ALERTABLE) -+ res = WaitForMultipleObjectsEx(cHandles, pHandles, -+ (dwFlags & COWAIT_WAITALL) != 0, 0, TRUE); -+ -+ if (res == WAIT_TIMEOUT) -+ res = MsgWaitForMultipleObjectsEx(cHandles, pHandles, -+ (dwTimeout == INFINITE) ? INFINITE : start_time + dwTimeout - now, -+ QS_SENDMESSAGE | QS_ALLPOSTMESSAGE | QS_PAINT, wait_flags); - - if (res == WAIT_OBJECT_0 + cHandles) /* messages available */ - { -diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c -index 8b864bf..21490ef 100644 ---- a/dlls/ole32/tests/compobj.c -+++ b/dlls/ole32/tests/compobj.c -@@ -2233,7 +2233,6 @@ static void test_CoWaitForMultipleHandles(void) - ok(hr == S_OK, "expected hr S_OK, got 0x%08x\n", hr); - ok(index == WAIT_IO_COMPLETION, "expected index WAIT_IO_COMPLETION, got %u\n", index); - success = PeekMessageA(&msg, hWnd, WM_DDE_FIRST, WM_DDE_FIRST, PM_REMOVE); -- todo_wine - ok(success, "CoWaitForMultipleHandles unexpectedly pumped messages\n"); - - /* test with COWAIT_INPUTAVAILABLE --- -2.1.3 - diff --git a/patches/ole32-CoWaitForMultipleHandles/definition b/patches/ole32-CoWaitForMultipleHandles/definition deleted file mode 100644 index 980b03c1..00000000 --- a/patches/ole32-CoWaitForMultipleHandles/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [32568] CoWaitForMultipleHandles shouldn't process window events when APC calls are queued diff --git a/patches/user32-ShowWindow/0001-user32-tests-Add-interthread-tests-for-calling-ShowW.patch b/patches/user32-ShowWindow/0001-user32-tests-Add-interthread-tests-for-calling-ShowW.patch deleted file mode 100644 index 03097455..00000000 --- a/patches/user32-ShowWindow/0001-user32-tests-Add-interthread-tests-for-calling-ShowW.patch +++ /dev/null @@ -1,61 +0,0 @@ -From fd9bbdd0376581345c88bd65f4bbac2de348c202 Mon Sep 17 00:00:00 2001 -From: Drew Ronneberg -Date: Wed, 19 Nov 2014 13:34:54 +0000 -Subject: user32/tests: Add interthread tests for calling ShowWindow(SW_HIDE) - on a hidden window. - ---- - dlls/user32/tests/msg.c | 27 +++++++++++++++++++++++++++ - 1 file changed, 27 insertions(+) - -diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c -index 9b7453f..dfba25d 100644 ---- a/dlls/user32/tests/msg.c -+++ b/dlls/user32/tests/msg.c -@@ -4621,9 +4621,18 @@ static void test_MsgWaitForMultipleObjects(HWND hwnd) - ok(ret == WAIT_IO_COMPLETION, "MsgWaitForMultipleObjectsEx returned %x\n", ret); - } - -+static DWORD CALLBACK show_window_thread(LPVOID arg) -+{ -+ HWND hwnd = arg; -+ ShowWindow(hwnd, SW_HIDE); -+ return 0; -+} -+ - /* test if we receive the right sequence of messages */ - static void test_messages(void) - { -+ DWORD tid, num_msgs; -+ HANDLE thread; - HWND hwnd, hparent, hchild; - HWND hchild2, hbutton; - HMENU hmenu; -@@ -4642,6 +4651,24 @@ static void test_messages(void) - ok( ShowWindow(hwnd, SW_HIDE) == FALSE, "ShowWindow: window was visible\n" ); - ok_sequence(WmEmptySeq, "ShowWindow(SW_HIDE):overlapped, invisible", FALSE); - -+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE | PM_QS_SENDMESSAGE)) -+ DispatchMessageA(&msg); -+ -+ /* test ShowWindow(SW_HIDE) on a hidden window from a different thread */ -+ num_msgs = 0; -+ thread = CreateThread(NULL, 0, show_window_thread, hwnd, 0, &tid); -+ ok(thread != NULL, "CreateThread failed, error %d\n", GetLastError()); -+ while (MsgWaitForMultipleObjects(1, &thread, FALSE, INFINITE, QS_SENDMESSAGE) != WAIT_OBJECT_0) -+ { -+ while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE | PM_QS_SENDMESSAGE)) -+ DispatchMessageA(&msg); -+ num_msgs++; -+ } -+ CloseHandle(thread); -+ todo_wine -+ ok(num_msgs == 0, "got %u wakeups from MsgWaitForMultipleObjects\n", num_msgs); -+ ok_sequence(WmEmptySeq, "ShowWindow(SW_HIDE):overlapped, invisible", FALSE); -+ - /* test WM_SETREDRAW on a not visible top level window */ - test_WM_SETREDRAW(hwnd); - --- -2.1.3 - diff --git a/patches/user32-ShowWindow/0002-user32-Do-not-call-SendMessage-to-hide-a-window-that.patch b/patches/user32-ShowWindow/0002-user32-Do-not-call-SendMessage-to-hide-a-window-that.patch deleted file mode 100644 index 4445cb96..00000000 --- a/patches/user32-ShowWindow/0002-user32-Do-not-call-SendMessage-to-hide-a-window-that.patch +++ /dev/null @@ -1,40 +0,0 @@ -From fdf3506544cc3400b4a5bae23cf661df214d6292 Mon Sep 17 00:00:00 2001 -From: Drew Ronneberg -Date: Wed, 19 Nov 2014 13:35:01 +0000 -Subject: user32: Do not call SendMessage() to hide a window that is already - hidden (try 3) - ---- - dlls/user32/tests/msg.c | 1 - - dlls/user32/winpos.c | 3 +++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c -index dfba25d..9d448ae 100644 ---- a/dlls/user32/tests/msg.c -+++ b/dlls/user32/tests/msg.c -@@ -4665,7 +4665,6 @@ static void test_messages(void) - num_msgs++; - } - CloseHandle(thread); -- todo_wine - ok(num_msgs == 0, "got %u wakeups from MsgWaitForMultipleObjects\n", num_msgs); - ok_sequence(WmEmptySeq, "ShowWindow(SW_HIDE):overlapped, invisible", FALSE); - -diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c -index 5373733..12d3ffa 100644 ---- a/dlls/user32/winpos.c -+++ b/dlls/user32/winpos.c -@@ -1219,6 +1219,9 @@ BOOL WINAPI ShowWindow( HWND hwnd, INT cmd ) - if ((full_handle = WIN_IsCurrentThread( hwnd ))) - return show_window( full_handle, cmd ); - -+ if ((cmd == SW_HIDE) && !(GetWindowLongW( hwnd, GWL_STYLE ) & WS_VISIBLE)) -+ return FALSE; -+ - return SendMessageW( hwnd, WM_WINE_SHOWWINDOW, cmd, 0 ); - } - --- -2.1.3 - diff --git a/patches/user32-ShowWindow/definition b/patches/user32-ShowWindow/definition deleted file mode 100644 index 8de017d2..00000000 --- a/patches/user32-ShowWindow/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [11582] ShowWindow should avoid interthread no-op messages