From eb98f4e74fae6c3f68858a8d95d3d3b4049e30f3 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 2 Oct 2015 17:13:21 +0200 Subject: [PATCH] Rebase against 9bd963065b1fb7b445d010897d5f84967eadf75b. --- README.md | 9 +- debian/changelog | 9 + ...WAPEFFECT_COPY_VSYNC-swapchain-effec.patch | 33 --- .../d3d8-D3DSWAPEFFECT_COPY_VSYNC/definition | 1 - ...plement-ThreadGroupInformation-class.patch | 108 ------- ...Implement-Set-GetThreadGroupAffinity.patch | 275 ------------------ .../kernel32-ThreadGroupAffinity/definition | 1 - ...TUS_OBJECT_NAME_INVALID-in-wine_nt_t.patch | 172 ----------- patches/ntdll-Empty_Path/definition | 1 - ...-ntdll-Improve-stub-of-NtQueryEaFile.patch | 8 +- patches/ntdll-NtQueryEaFile/definition | 1 - patches/patchinstall.sh | 97 +----- ...ATUS_CANT_WAIT-WSAEWOULDBLOCK-for-no.patch | 29 -- patches/server-Address_List_Change/definition | 2 - 14 files changed, 19 insertions(+), 727 deletions(-) delete mode 100644 patches/d3d8-D3DSWAPEFFECT_COPY_VSYNC/0001-d3d8-Handle-D3DSWAPEFFECT_COPY_VSYNC-swapchain-effec.patch delete mode 100644 patches/d3d8-D3DSWAPEFFECT_COPY_VSYNC/definition delete mode 100644 patches/kernel32-ThreadGroupAffinity/0001-ntdll-Implement-ThreadGroupInformation-class.patch delete mode 100644 patches/kernel32-ThreadGroupAffinity/0002-kernel32-Implement-Set-GetThreadGroupAffinity.patch delete mode 100644 patches/kernel32-ThreadGroupAffinity/definition delete mode 100644 patches/ntdll-Empty_Path/0001-ntdll-Return-STATUS_OBJECT_NAME_INVALID-in-wine_nt_t.patch delete mode 100644 patches/ntdll-Empty_Path/definition delete mode 100644 patches/server-Address_List_Change/0001-server-Return-STATUS_CANT_WAIT-WSAEWOULDBLOCK-for-no.patch delete mode 100644 patches/server-Address_List_Change/definition diff --git a/README.md b/README.md index e457db7b..54038b6f 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Wine. All those differences are also documented on the Included bug fixes and improvements ----------------------------------- -**Bug fixes and features included in the next upcoming release [13]:** +**Bug fixes and features included in the next upcoming release [12]:** * Add implementation for msidb commandline tool * Codepage conversion should fail when destination length is < 0 @@ -43,7 +43,6 @@ Included bug fixes and improvements * Do not wait for hook thread startup in IDirectInput8::Initialize ([Wine Bug #21403](https://bugs.winehq.org/show_bug.cgi?id=21403)) * Fix calculation of listbox size when horizontal scrollbar is present ([Wine Bug #38142](https://bugs.winehq.org/show_bug.cgi?id=38142)) * Implement additional stub functions in authz.dll -* Implement semi-stub for d3d8 swapchain effect D3DSWAPEFFECT_COPY_VSYNC ([Wine Bug #39281](https://bugs.winehq.org/show_bug.cgi?id=39281)) * Pass cookie by reference to msvcrt_local_unwind4 in _seh_longjmp_unwind4 ([Wine Bug #39356](https://bugs.winehq.org/show_bug.cgi?id=39356)) * Protect TVM_GETITEM from invalid item pointers ([Wine Bug #33001](https://bugs.winehq.org/show_bug.cgi?id=33001)) * Reduce stack usage of virtual memory functions ([Wine Bug #34558](https://bugs.winehq.org/show_bug.cgi?id=34558)) @@ -213,7 +212,7 @@ for more details.* * Implement stub for ntoskrnl.KeDelayExecutionThread. * Implement stubs for ntoskrnl.Ex{Acquire,Release}FastMutexUnsafe * Implement stubs for ntoskrnl.ObReferenceObjectByPointer and ntoskrnl.ObDereferenceObject -* Implement {Set,Get}ThreadGroupAffinity and related ntdll functions ([Wine Bug #36549](https://bugs.winehq.org/show_bug.cgi?id=36549)) +* ~~Implement {Set,Get}ThreadGroupAffinity and related ntdll functions~~ ([Wine Bug #36549](https://bugs.winehq.org/show_bug.cgi?id=36549)) * Improve ReadDataAvailable handling in FilePipeLocalInformation class * Improve startup performance by delaying font initialization * Improve stub for AEV_GetVolumeRange ([Wine Bug #35658](https://bugs.winehq.org/show_bug.cgi?id=35658)) @@ -245,7 +244,7 @@ for more details.* * Properly render themed buttons when they are pressed ([Wine Bug #37584](https://bugs.winehq.org/show_bug.cgi?id=37584)) * Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates) * Report correct ObjectName for NamedPipe wineserver objects -* Return STATUS_OBJECT_NAME_INVALID in wine_nt_to_unix_file_name for paths that only contain a prefix ([Wine Bug #39133](https://bugs.winehq.org/show_bug.cgi?id=39133)) +* ~~Return STATUS_OBJECT_NAME_INVALID in wine_nt_to_unix_file_name for paths that only contain a prefix~~ ([Wine Bug #39133](https://bugs.winehq.org/show_bug.cgi?id=39133)) * Return a dummy BIOS name in Win32_BIOS record * Return a valid mesh in D3DXCreateTeapot ([Wine Bug #36884](https://bugs.winehq.org/show_bug.cgi?id=36884)) * Return an error when trying to open a terminated process ([Wine Bug #37087](https://bugs.winehq.org/show_bug.cgi?id=37087)) @@ -295,7 +294,7 @@ for more details.* * Support for linux priority levels for faster performance * Support for loader dll redirections * Support for named pipe message mode (Linux only) ([Wine Bug #17195](https://bugs.winehq.org/show_bug.cgi?id=17195)) -* Support for non-blocking SIO_ADDRESS_LIST_CHANGE requests ([Wine Bug #38062](https://bugs.winehq.org/show_bug.cgi?id=38062)) +* ~~Support for non-blocking SIO_ADDRESS_LIST_CHANGE requests~~ ([Wine Bug #38062](https://bugs.winehq.org/show_bug.cgi?id=38062)) * Support for pasting HTML from Unix applications ([Wine Bug #7372](https://bugs.winehq.org/show_bug.cgi?id=7372)) * Support for process ACLs ([Wine Bug #22006](https://bugs.winehq.org/show_bug.cgi?id=22006)) * Support for setcap on wine-preloader ([Wine Bug #26256](https://bugs.winehq.org/show_bug.cgi?id=26256)) diff --git a/debian/changelog b/debian/changelog index 683db392..9eca7dc2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -42,6 +42,15 @@ wine-staging (1.7.52) UNRELEASED; urgency=low (accepted upstream). * Removed patch to fix failure to create anonymous file mapping after failed open_fd server call (accepted upstream). + * Removed patch to implement semi-stub for d3d8 swapchain effect + D3DSWAPEFFECT_COPY_VSYNC (identical patch accepted upstream). + * Removed patch to implement {Set,Get}ThreadGroupAffinity and related ntdll + functions (accepted upstream). + * Removed patch to return STATUS_OBJECT_NAME_INVALID in + wine_nt_to_unix_file_name for paths that only contain a prefix (accepted + upstream). + * Removed patch to implement support for non-blocking SIO_ADDRESS_LIST_CHANGE + requests (accepted upstream). -- Sebastian Lackner Mon, 07 Sep 2015 16:51:25 +0200 wine-staging (1.7.51) unstable; urgency=low diff --git a/patches/d3d8-D3DSWAPEFFECT_COPY_VSYNC/0001-d3d8-Handle-D3DSWAPEFFECT_COPY_VSYNC-swapchain-effec.patch b/patches/d3d8-D3DSWAPEFFECT_COPY_VSYNC/0001-d3d8-Handle-D3DSWAPEFFECT_COPY_VSYNC-swapchain-effec.patch deleted file mode 100644 index a046f63e..00000000 --- a/patches/d3d8-D3DSWAPEFFECT_COPY_VSYNC/0001-d3d8-Handle-D3DSWAPEFFECT_COPY_VSYNC-swapchain-effec.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d65c501e946415d47bb6fc7f084233ac8de43dec Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 26 Sep 2015 17:21:22 +0200 -Subject: d3d8: Handle D3DSWAPEFFECT_COPY_VSYNC swapchain effect like - D3DSWAPEFFECT_COPY. - ---- - dlls/d3d8/device.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c -index e899b34..d006c12 100644 ---- a/dlls/d3d8/device.c -+++ b/dlls/d3d8/device.c -@@ -191,13 +191,13 @@ static void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS - static BOOL wined3d_swapchain_desc_from_present_parameters(struct wined3d_swapchain_desc *swapchain_desc, - const D3DPRESENT_PARAMETERS *present_parameters) - { -- if (!present_parameters->SwapEffect || present_parameters->SwapEffect > D3DSWAPEFFECT_COPY) -+ if (!present_parameters->SwapEffect || present_parameters->SwapEffect > D3DSWAPEFFECT_COPY_VSYNC) - { - WARN("Invalid swap effect %u passed.\n", present_parameters->SwapEffect); - return FALSE; - } - if (present_parameters->BackBufferCount > 3 -- || (present_parameters->SwapEffect == D3DSWAPEFFECT_COPY -+ || (present_parameters->SwapEffect >= D3DSWAPEFFECT_COPY - && present_parameters->BackBufferCount > 1)) - { - WARN("Invalid backbuffer count %u.\n", present_parameters->BackBufferCount); --- -2.5.1 - diff --git a/patches/d3d8-D3DSWAPEFFECT_COPY_VSYNC/definition b/patches/d3d8-D3DSWAPEFFECT_COPY_VSYNC/definition deleted file mode 100644 index 06130fd5..00000000 --- a/patches/d3d8-D3DSWAPEFFECT_COPY_VSYNC/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [39281] Implement semi-stub for d3d8 swapchain effect D3DSWAPEFFECT_COPY_VSYNC diff --git a/patches/kernel32-ThreadGroupAffinity/0001-ntdll-Implement-ThreadGroupInformation-class.patch b/patches/kernel32-ThreadGroupAffinity/0001-ntdll-Implement-ThreadGroupInformation-class.patch deleted file mode 100644 index 5a35c243..00000000 --- a/patches/kernel32-ThreadGroupAffinity/0001-ntdll-Implement-ThreadGroupInformation-class.patch +++ /dev/null @@ -1,108 +0,0 @@ -From c12f95c2b6fefcbe086e1d623d2124f31b84b53e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Sun, 6 Sep 2015 06:17:46 +0200 -Subject: ntdll: Implement ThreadGroupInformation class. - ---- - dlls/ntdll/thread.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ - include/winternl.h | 16 ++++++++++++++++ - 2 files changed, 66 insertions(+) - -diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c -index 0a8a7b9..afb347f 100644 ---- a/dlls/ntdll/thread.c -+++ b/dlls/ntdll/thread.c -@@ -1103,6 +1103,29 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class, - SERVER_END_REQ; - return status; - } -+ case ThreadGroupInformation: -+ { -+ const ULONG_PTR affinity_mask = get_system_affinity_mask(); -+ GROUP_AFFINITY affinity; -+ -+ memset(&affinity, 0, sizeof(affinity)); -+ affinity.Group = 0; /* Wine only supports max 64 processors */ -+ -+ SERVER_START_REQ( get_thread_info ) -+ { -+ req->handle = wine_server_obj_handle( handle ); -+ req->tid_in = 0; -+ if (!(status = wine_server_call( req ))) -+ affinity.Mask = reply->affinity & affinity_mask; -+ } -+ SERVER_END_REQ; -+ if (status == STATUS_SUCCESS) -+ { -+ if (data) memcpy( data, &affinity, min( length, sizeof(affinity) )); -+ if (ret_len) *ret_len = min( length, sizeof(affinity) ); -+ } -+ } -+ return status; - case ThreadPriority: - case ThreadBasePriority: - case ThreadImpersonationToken: -@@ -1233,6 +1256,33 @@ NTSTATUS WINAPI NtSetInformationThread( HANDLE handle, THREADINFOCLASS class, - SERVER_END_REQ; - } - return status; -+ case ThreadGroupInformation: -+ { -+ const ULONG_PTR affinity_mask = get_system_affinity_mask(); -+ const GROUP_AFFINITY *req_aff; -+ -+ if (length != sizeof(*req_aff)) return STATUS_INVALID_PARAMETER; -+ if (!data) return STATUS_ACCESS_VIOLATION; -+ req_aff = data; -+ -+ /* On windows the request fails if the reserved fields are set */ -+ if (req_aff->Reserved[0] || req_aff->Reserved[1] || req_aff->Reserved[2]) -+ return STATUS_INVALID_PARAMETER; -+ -+ /* Wine only supports max 64 processors */ -+ if (req_aff->Group) return STATUS_INVALID_PARAMETER; -+ if (req_aff->Mask & ~affinity_mask) return STATUS_INVALID_PARAMETER; -+ if (!req_aff->Mask) return STATUS_INVALID_PARAMETER; -+ SERVER_START_REQ( set_thread_info ) -+ { -+ req->handle = wine_server_obj_handle( handle ); -+ req->affinity = req_aff->Mask; -+ req->mask = SET_THREAD_INFO_AFFINITY; -+ status = wine_server_call( req ); -+ } -+ SERVER_END_REQ; -+ } -+ return status; - case ThreadBasicInformation: - case ThreadTimes: - case ThreadPriority: -diff --git a/include/winternl.h b/include/winternl.h -index 2b10f8d..3e64b4d 100644 ---- a/include/winternl.h -+++ b/include/winternl.h -@@ -859,6 +859,22 @@ typedef enum _THREADINFOCLASS { - ThreadSetTlsArrayAddress, - ThreadIsIoPending, - ThreadHideFromDebugger, -+ ThreadBreakOnTermination, -+ ThreadSwitchLegacyState, -+ ThreadIsTerminated, -+ ThreadLastSystemCall, -+ ThreadIoPriority, -+ ThreadCycleTime, -+ ThreadPagePriority, -+ ThreadActualBasePriority, -+ ThreadTebInformation, -+ ThreadCSwitchMon, -+ ThreadCSwitchPmu, -+ ThreadWow64Context, -+ ThreadGroupInformation, -+ ThreadUmsInformation, -+ ThreadCounterProfiling, -+ ThreadIdealProcessorEx, - MaxThreadInfoClass - } THREADINFOCLASS; - --- -2.5.1 - diff --git a/patches/kernel32-ThreadGroupAffinity/0002-kernel32-Implement-Set-GetThreadGroupAffinity.patch b/patches/kernel32-ThreadGroupAffinity/0002-kernel32-Implement-Set-GetThreadGroupAffinity.patch deleted file mode 100644 index e8757164..00000000 --- a/patches/kernel32-ThreadGroupAffinity/0002-kernel32-Implement-Set-GetThreadGroupAffinity.patch +++ /dev/null @@ -1,275 +0,0 @@ -From 0e15d46d97e226c2a566d7f30c9f67afaabbb6b1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Sun, 6 Sep 2015 06:19:40 +0200 -Subject: kernel32: Implement Set/GetThreadGroupAffinity. - ---- - dlls/kernel32/kernel32.spec | 4 +- - dlls/kernel32/tests/thread.c | 142 ++++++++++++++++++++++++++++++++----------- - dlls/kernel32/thread.c | 46 ++++++++++++++ - 3 files changed, 156 insertions(+), 36 deletions(-) - -diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec -index 77e55e1..bda7c9d 100644 ---- a/dlls/kernel32/kernel32.spec -+++ b/dlls/kernel32/kernel32.spec -@@ -844,7 +844,7 @@ - @ stdcall GetTempPathW(long ptr) - @ stdcall GetThreadContext(long ptr) - @ stdcall GetThreadErrorMode() --# @ stub GetThreadGroupAffinity -+@ stdcall GetThreadGroupAffinity(long ptr) - @ stdcall GetThreadId(ptr) - # @ stub GetThreadIdealProcessorEx - @ stdcall GetThreadIOPendingFlag(long ptr) -@@ -1443,7 +1443,7 @@ - @ stdcall SetThreadContext(long ptr) - @ stdcall SetThreadErrorMode(long ptr) - @ stdcall SetThreadExecutionState(long) --# @ stub SetThreadGroupAffinity -+@ stdcall SetThreadGroupAffinity(long ptr ptr) - @ stdcall SetThreadIdealProcessor(long long) - # @ stub SetThreadIdealProcessorEx - @ stdcall SetThreadLocale(long) -diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c -index d0fbfa4..fc5ff94 100644 ---- a/dlls/kernel32/tests/thread.c -+++ b/dlls/kernel32/tests/thread.c -@@ -99,6 +99,9 @@ static void (WINAPI *pSubmitThreadpoolWork)(PTP_WORK); - static void (WINAPI *pWaitForThreadpoolWorkCallbacks)(PTP_WORK,BOOL); - static void (WINAPI *pCloseThreadpoolWork)(PTP_WORK); - static NTSTATUS (WINAPI *pNtQueryInformationThread)(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG); -+static BOOL (WINAPI *pGetThreadGroupAffinity)(HANDLE,GROUP_AFFINITY*); -+static BOOL (WINAPI *pSetThreadGroupAffinity)(HANDLE,const GROUP_AFFINITY*,GROUP_AFFINITY*); -+static NTSTATUS (WINAPI *pNtSetInformationThread)(HANDLE,THREADINFOCLASS,LPCVOID,ULONG); - - static HANDLE create_target_process(const char *arg) - { -@@ -877,6 +880,15 @@ static VOID test_thread_processor(void) - retMask = SetThreadAffinityMask(curthread,~0); - ok(broken(retMask==0) || retMask==processMask, - "SetThreadAffinityMask(thread,-1) failed to request all processors.\n"); -+ -+ if (retMask == processMask) -+ { -+ /* Show that the "all processors" flag is handled in ntdll/kernel */ -+ DWORD_PTR mask = ~0; -+ NTSTATUS status = pNtSetInformationThread(curthread, ThreadAffinityMask, &mask, sizeof(mask)); -+ ok(status == STATUS_SUCCESS, "Expected STATUS_SUCCESS in NtSetInformationThread, got %x\n", status); -+ } -+ - if (retMask == processMask && sizeof(ULONG_PTR) > sizeof(ULONG)) - { - /* only the low 32-bits matter */ -@@ -886,41 +898,99 @@ static VOID test_thread_processor(void) - ok(retMask == processMask, "SetThreadAffinityMask failed\n"); - } - /* NOTE: This only works on WinNT/2000/XP) */ -- if (pSetThreadIdealProcessor) { -- SetLastError(0xdeadbeef); -- error=pSetThreadIdealProcessor(curthread,0); -- if (GetLastError()==ERROR_CALL_NOT_IMPLEMENTED) -- { -- win_skip("SetThreadIdealProcessor is not implemented\n"); -- return; -- } -- ok(error!=-1, "SetThreadIdealProcessor failed\n"); -- -- if (is_wow64) -- { -- SetLastError(0xdeadbeef); -- error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1); -- todo_wine -- ok(error!=-1, "SetThreadIdealProcessor failed for %u on Wow64\n", MAXIMUM_PROCESSORS+1); -- -- SetLastError(0xdeadbeef); -- error=pSetThreadIdealProcessor(curthread,65); -- ok(error==-1, "SetThreadIdealProcessor succeeded with an illegal processor #\n"); -- ok(GetLastError()==ERROR_INVALID_PARAMETER, -- "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); -- } -- else -- { -- SetLastError(0xdeadbeef); -- error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1); -- ok(error==-1, "SetThreadIdealProcessor succeeded with an illegal processor #\n"); -- ok(GetLastError()==ERROR_INVALID_PARAMETER, -- "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); -- } -+ if (pSetThreadIdealProcessor) -+ { -+ SetLastError(0xdeadbeef); -+ error=pSetThreadIdealProcessor(curthread,0); -+ if (GetLastError()!=ERROR_CALL_NOT_IMPLEMENTED) -+ { -+ ok(error!=-1, "SetThreadIdealProcessor failed\n"); -+ -+ if (is_wow64) -+ { -+ SetLastError(0xdeadbeef); -+ error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1); -+ todo_wine -+ ok(error!=-1, "SetThreadIdealProcessor failed for %u on Wow64\n", MAXIMUM_PROCESSORS+1); -+ -+ SetLastError(0xdeadbeef); -+ error=pSetThreadIdealProcessor(curthread,65); -+ ok(error==-1, "SetThreadIdealProcessor succeeded with an illegal processor #\n"); -+ ok(GetLastError()==ERROR_INVALID_PARAMETER, -+ "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); -+ } -+ else -+ { -+ SetLastError(0xdeadbeef); -+ error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS+1); -+ ok(error==-1, "SetThreadIdealProcessor succeeded with an illegal processor #\n"); -+ ok(GetLastError()==ERROR_INVALID_PARAMETER, -+ "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); -+ } -+ -+ error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS); -+ ok(error!=-1, "SetThreadIdealProcessor failed\n"); -+ } -+ else -+ win_skip("SetThreadIdealProcessor is not implemented\n"); -+ } - -- error=pSetThreadIdealProcessor(curthread,MAXIMUM_PROCESSORS); -- ok(error!=-1, "SetThreadIdealProcessor failed\n"); -- } -+ if (pGetThreadGroupAffinity && pSetThreadGroupAffinity) -+ { -+ GROUP_AFFINITY affinity, affinity_new; -+ NTSTATUS status; -+ -+ memset(&affinity, 0, sizeof(affinity)); -+ ok(pGetThreadGroupAffinity(curthread, &affinity), "GetThreadGroupAffinity failed\n"); -+ -+ SetLastError(0xdeadbeef); -+ ok(!pGetThreadGroupAffinity(curthread, NULL), "GetThreadGroupAffinity succeeded\n"); -+ ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == ERROR_NOACCESS), /* Win 7 and 8 */ -+ "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); -+ ok(affinity.Group == 0, "Expected group 0 got %u\n", affinity.Group); -+ -+ memset(&affinity_new, 0, sizeof(affinity_new)); -+ affinity_new.Group = 0; -+ affinity_new.Mask = affinity.Mask; -+ ok(pSetThreadGroupAffinity(curthread, &affinity_new, &affinity), "SetThreadGroupAffinity failed\n"); -+ ok(affinity_new.Mask == affinity.Mask, "Expected old affinity mask %lx, got %lx\n", -+ affinity_new.Mask, affinity.Mask); -+ -+ /* show that the "all processors" flag is not supported for SetThreadGroupAffinity */ -+ affinity_new.Group = 0; -+ affinity_new.Mask = ~0; -+ SetLastError(0xdeadbeef); -+ ok(!pSetThreadGroupAffinity(curthread, &affinity_new, NULL), "SetThreadGroupAffinity succeeded\n"); -+ ok(GetLastError() == ERROR_INVALID_PARAMETER, -+ "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); -+ -+ affinity_new.Group = 1; /* assumes that you have less than 64 logical processors */ -+ affinity_new.Mask = 0x1; -+ SetLastError(0xdeadbeef); -+ ok(!pSetThreadGroupAffinity(curthread, &affinity_new, NULL), "SetThreadGroupAffinity succeeded\n"); -+ ok(GetLastError() == ERROR_INVALID_PARAMETER, -+ "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); -+ -+ SetLastError(0xdeadbeef); -+ ok(!pSetThreadGroupAffinity(curthread, NULL, NULL), "SetThreadGroupAffinity succeeded\n"); -+ ok(GetLastError() == ERROR_NOACCESS, -+ "Expected ERROR_NOACCESS, got %d\n", GetLastError()); -+ -+ /* show that the ERROR_NOACCESS was set in ntdll */ -+ status = pNtSetInformationThread(curthread, ThreadGroupInformation, NULL, sizeof(affinity_new)); -+ ok(status == STATUS_ACCESS_VIOLATION, -+ "Expected STATUS_ACCESS_VIOLATION, got %08x\n", status); -+ -+ /* restore original mask */ -+ affinity_new.Group = 0; -+ affinity_new.Mask = affinity.Mask; -+ SetLastError(0xdeadbeef); -+ ok(pSetThreadGroupAffinity(curthread, &affinity_new, &affinity), "SetThreadGroupAffinity failed\n"); -+ ok(affinity_new.Mask == affinity.Mask, "Expected old affinity mask %lx, got %lx\n", -+ affinity_new.Mask, affinity.Mask); -+ } -+ else -+ win_skip("Get/SetThreadGroupAffinity not available\n"); - } - - static VOID test_GetThreadExitCode(void) -@@ -1833,6 +1903,9 @@ static void init_funcs(void) - X(SubmitThreadpoolWork); - X(WaitForThreadpoolWorkCallbacks); - X(CloseThreadpoolWork); -+ -+ X(GetThreadGroupAffinity); -+ X(SetThreadGroupAffinity); - #undef X - - #define X(f) p##f = (void*)GetProcAddress(ntdll, #f) -@@ -1840,6 +1913,7 @@ static void init_funcs(void) - { - X(NtQueryInformationThread); - X(RtlGetThreadErrorMode); -+ X(NtSetInformationThread); - } - #undef X - } -diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c -index c992e0d..0e9de82 100644 ---- a/dlls/kernel32/thread.c -+++ b/dlls/kernel32/thread.c -@@ -378,6 +378,52 @@ BOOL WINAPI SetThreadStackGuarantee(PULONG stacksize) - return TRUE; - } - -+/*********************************************************************** -+ * GetThreadGroupAffinity (KERNEL32.@) -+ */ -+BOOL WINAPI GetThreadGroupAffinity( HANDLE thread, GROUP_AFFINITY *affinity ) -+{ -+ NTSTATUS status; -+ -+ if (!affinity) -+ { -+ SetLastError( ERROR_INVALID_PARAMETER ); -+ return FALSE; -+ } -+ -+ status = NtQueryInformationThread( thread, ThreadGroupInformation, -+ affinity, sizeof(*affinity), NULL ); -+ if (status) -+ { -+ SetLastError( RtlNtStatusToDosError(status) ); -+ return FALSE; -+ } -+ -+ return TRUE; -+} -+ -+/*********************************************************************** -+ * SetThreadGroupAffinity (KERNEL32.@) -+ */ -+BOOL WINAPI SetThreadGroupAffinity( HANDLE thread, const GROUP_AFFINITY *affinity_new, -+ GROUP_AFFINITY *affinity_old ) -+{ -+ NTSTATUS status; -+ -+ if (affinity_old && !GetThreadGroupAffinity( thread, affinity_old )) -+ return FALSE; -+ -+ status = NtSetInformationThread( thread, ThreadGroupInformation, -+ affinity_new, sizeof(*affinity_new) ); -+ if (status) -+ { -+ SetLastError( RtlNtStatusToDosError(status) ); -+ return FALSE; -+ } -+ -+ return TRUE; -+} -+ - /********************************************************************** - * SetThreadAffinityMask (KERNEL32.@) - */ --- -2.5.1 - diff --git a/patches/kernel32-ThreadGroupAffinity/definition b/patches/kernel32-ThreadGroupAffinity/definition deleted file mode 100644 index 8d06bd44..00000000 --- a/patches/kernel32-ThreadGroupAffinity/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [36549] Implement {Set,Get}ThreadGroupAffinity and related ntdll functions diff --git a/patches/ntdll-Empty_Path/0001-ntdll-Return-STATUS_OBJECT_NAME_INVALID-in-wine_nt_t.patch b/patches/ntdll-Empty_Path/0001-ntdll-Return-STATUS_OBJECT_NAME_INVALID-in-wine_nt_t.patch deleted file mode 100644 index cfa34893..00000000 --- a/patches/ntdll-Empty_Path/0001-ntdll-Return-STATUS_OBJECT_NAME_INVALID-in-wine_nt_t.patch +++ /dev/null @@ -1,172 +0,0 @@ -From 526502c4455016f3e42f671d7a03b9c15ce79fa9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Sat, 22 Aug 2015 03:19:18 +0200 -Subject: ntdll: Return STATUS_OBJECT_NAME_INVALID in wine_nt_to_unix_file_name - for paths that only contain a prefix. - ---- - dlls/kernel32/tests/file.c | 22 ++++++++++++++++++++++ - dlls/ntdll/directory.c | 22 ++++++++++++++-------- - dlls/ntdll/tests/file.c | 39 +++++++++++++++++++++++++++++++++++++++ - 3 files changed, 75 insertions(+), 8 deletions(-) - -diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c -index dd64c91..fbe2ddd 100644 ---- a/dlls/kernel32/tests/file.c -+++ b/dlls/kernel32/tests/file.c -@@ -4650,6 +4650,27 @@ todo_wine - CloseHandle(file); - } - -+static void test_GetFileAttributesExW(void) -+{ -+ static const WCHAR path1[] = {'\\','\\','?','\\',0}; -+ static const WCHAR path2[] = {'\\','?','?','\\',0}; -+ static const WCHAR path3[] = {'\\','D','o','s','D','e','v','i','c','e','s','\\',0}; -+ WIN32_FILE_ATTRIBUTE_DATA info; -+ BOOL ret; -+ -+ ret = GetFileAttributesExW(path1, GetFileExInfoStandard, &info); -+ ok(!ret, "GetFileAttributesExW succeeded\n"); -+ ok(GetLastError() == ERROR_INVALID_NAME, "Expected error ERROR_INVALID_NAME, got %d\n", GetLastError()); -+ -+ ret = GetFileAttributesExW(path2, GetFileExInfoStandard, &info); -+ ok(!ret, "GetFileAttributesExW succeeded\n"); -+ ok(GetLastError() == ERROR_INVALID_NAME, "Expected error ERROR_INVALID_NAME, got %d\n", GetLastError()); -+ -+ ret = GetFileAttributesExW(path3, GetFileExInfoStandard, &info); -+ ok(!ret, "GetFileAttributesExW succeeded\n"); -+ ok(GetLastError() == ERROR_FILE_NOT_FOUND, "Expected error ERROR_FILE_NOT_FOUND, got %d\n", GetLastError()); -+} -+ - START_TEST(file) - { - InitFunctionPointers(); -@@ -4706,4 +4727,5 @@ START_TEST(file) - test_GetFinalPathNameByHandleA(); - test_GetFinalPathNameByHandleW(); - test_SetFileInformationByHandle(); -+ test_GetFileAttributesExW(); - } -diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c -index 0e02f2e..d1f66e0 100644 ---- a/dlls/ntdll/directory.c -+++ b/dlls/ntdll/directory.c -@@ -2757,20 +2757,26 @@ static NTSTATUS get_dos_device( const WCHAR *name, UINT name_len, ANSI_STRING *u - - - /* return the length of the DOS namespace prefix if any */ --static inline int get_dos_prefix_len( const UNICODE_STRING *name ) -+static inline NTSTATUS get_dos_prefix_len( const UNICODE_STRING *name, int *prefix_len ) - { - static const WCHAR nt_prefixW[] = {'\\','?','?','\\'}; - static const WCHAR dosdev_prefixW[] = {'\\','D','o','s','D','e','v','i','c','e','s','\\'}; - -- if (name->Length > sizeof(nt_prefixW) && -+ if (name->Length >= sizeof(nt_prefixW) && - !memcmp( name->Buffer, nt_prefixW, sizeof(nt_prefixW) )) -- return sizeof(nt_prefixW) / sizeof(WCHAR); -+ { -+ *prefix_len = sizeof(nt_prefixW) / sizeof(WCHAR); -+ return (name->Length == sizeof(nt_prefixW)) ? STATUS_OBJECT_NAME_INVALID : STATUS_SUCCESS; -+ } - -- if (name->Length > sizeof(dosdev_prefixW) && -+ if (name->Length >= sizeof(dosdev_prefixW) && - !memicmpW( name->Buffer, dosdev_prefixW, sizeof(dosdev_prefixW)/sizeof(WCHAR) )) -- return sizeof(dosdev_prefixW) / sizeof(WCHAR); -+ { -+ *prefix_len = sizeof(dosdev_prefixW) / sizeof(WCHAR); -+ return (name->Length == sizeof(dosdev_prefixW)) ? STATUS_OBJECT_NAME_INVALID : STATUS_SUCCESS; -+ } - -- return 0; -+ return STATUS_BAD_DEVICE_TYPE; - } - - -@@ -3126,8 +3132,8 @@ NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRI - - if (!name_len || !IS_SEPARATOR(name[0])) return STATUS_OBJECT_PATH_SYNTAX_BAD; - -- if (!(pos = get_dos_prefix_len( nameW ))) -- return STATUS_BAD_DEVICE_TYPE; /* no DOS prefix, assume NT native name */ -+ if ((status = get_dos_prefix_len( nameW, &pos ))) -+ return status; /* no DOS prefix, assume NT native name */ - - name += pos; - name_len -= pos; -diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index d68be15..70c7a55 100644 ---- a/dlls/ntdll/tests/file.c -+++ b/dlls/ntdll/tests/file.c -@@ -78,6 +78,7 @@ static NTSTATUS (WINAPI *pNtQueryInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOI - static NTSTATUS (WINAPI *pNtQueryDirectoryFile)(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK, - PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN); - static NTSTATUS (WINAPI *pNtQueryVolumeInformationFile)(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS); -+static NTSTATUS (WINAPI *pNtQueryFullAttributesFile)(POBJECT_ATTRIBUTES, PFILE_NETWORK_OPEN_INFORMATION); - - static inline BOOL is_signaled( HANDLE obj ) - { -@@ -173,6 +174,10 @@ static void create_file_test(void) - '\\','f','a','i','l','i','n','g',0}; - static const WCHAR questionmarkInvalidNameW[] = {'a','f','i','l','e','?',0}; - static const WCHAR pipeInvalidNameW[] = {'a','|','b',0}; -+ static const WCHAR pathInvalidDosW[] = {'\\','D','o','s','D','e','v','i','c','e','s','\\',0}; -+ static const WCHAR pathInvalidNtW[] = {'\\','\\','?','\\',0}; -+ static const WCHAR pathInvalidNt2W[] = {'\\','?','?','\\',0}; -+ FILE_NETWORK_OPEN_INFORMATION info; - NTSTATUS status; - HANDLE dir, file; - WCHAR path[MAX_PATH]; -@@ -293,6 +298,39 @@ static void create_file_test(void) - ok(status == STATUS_OBJECT_NAME_INVALID, - "open %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status); - pRtlFreeUnicodeString(&nameW); -+ -+ pRtlInitUnicodeString( &nameW, pathInvalidNtW ); -+ status = pNtCreateFile(&dir, GENERIC_READ|SYNCHRONIZE, &attr, &io, NULL, 0, -+ FILE_SHARE_READ, FILE_CREATE, -+ FILE_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); -+ ok(status == STATUS_OBJECT_NAME_INVALID, -+ "open %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status); -+ -+ status = pNtQueryFullAttributesFile(&attr, &info); -+ todo_wine ok(status == STATUS_OBJECT_NAME_INVALID, -+ "query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status); -+ -+ pRtlInitUnicodeString( &nameW, pathInvalidNt2W ); -+ status = pNtCreateFile(&dir, GENERIC_READ|SYNCHRONIZE, &attr, &io, NULL, 0, -+ FILE_SHARE_READ, FILE_CREATE, -+ FILE_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); -+ ok(status == STATUS_OBJECT_NAME_INVALID, -+ "open %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status); -+ -+ status = pNtQueryFullAttributesFile(&attr, &info); -+ ok(status == STATUS_OBJECT_NAME_INVALID, -+ "query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status); -+ -+ pRtlInitUnicodeString( &nameW, pathInvalidDosW ); -+ status = pNtCreateFile(&dir, GENERIC_READ|SYNCHRONIZE, &attr, &io, NULL, 0, -+ FILE_SHARE_READ, FILE_CREATE, -+ FILE_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); -+ ok(status == STATUS_OBJECT_NAME_INVALID, -+ "open %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status); -+ -+ status = pNtQueryFullAttributesFile(&attr, &info); -+ ok(status == STATUS_OBJECT_NAME_INVALID, -+ "query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status); - } - - static void open_file_test(void) -@@ -4158,6 +4196,7 @@ START_TEST(file) - pNtQueryInformationFile = (void *)GetProcAddress(hntdll, "NtQueryInformationFile"); - pNtQueryDirectoryFile = (void *)GetProcAddress(hntdll, "NtQueryDirectoryFile"); - pNtQueryVolumeInformationFile = (void *)GetProcAddress(hntdll, "NtQueryVolumeInformationFile"); -+ pNtQueryFullAttributesFile = (void *)GetProcAddress(hntdll, "NtQueryFullAttributesFile"); - - test_read_write(); - test_NtCreateFile(); --- -2.5.0 - diff --git a/patches/ntdll-Empty_Path/definition b/patches/ntdll-Empty_Path/definition deleted file mode 100644 index 7f6981b0..00000000 --- a/patches/ntdll-Empty_Path/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [39133] Return STATUS_OBJECT_NAME_INVALID in wine_nt_to_unix_file_name for paths that only contain a prefix diff --git a/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch b/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch index 1cb789ba..f27cba1a 100644 --- a/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch +++ b/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch @@ -1,4 +1,4 @@ -From 4a7559e041d5f83e57368a21caf0237f6a24a380 Mon Sep 17 00:00:00 2001 +From 587d4844b3971d80d46e5641c29844b75756597c Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 6 Jun 2015 07:03:33 +0800 Subject: ntdll: Improve stub of NtQueryEaFile. @@ -44,13 +44,13 @@ index be6b591..8c8e976 100644 diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index 70c7a55..ad27906 100644 +index 1afb9c8..f13c9a9 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -79,6 +79,7 @@ static NTSTATUS (WINAPI *pNtQueryDirectoryFile)(HANDLE,HANDLE,PIO_APC_ROUTINE,PV PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN); static NTSTATUS (WINAPI *pNtQueryVolumeInformationFile)(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS); - static NTSTATUS (WINAPI *pNtQueryFullAttributesFile)(POBJECT_ATTRIBUTES, PFILE_NETWORK_OPEN_INFORMATION); + static NTSTATUS (WINAPI *pNtQueryFullAttributesFile)(const OBJECT_ATTRIBUTES*, FILE_NETWORK_OPEN_INFORMATION*); +static NTSTATUS (WINAPI *pNtQueryEaFile)(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN); static inline BOOL is_signaled( HANDLE obj ) @@ -157,5 +157,5 @@ index 70c7a55..ad27906 100644 + test_query_ea(); } -- -2.5.0 +2.5.1 diff --git a/patches/ntdll-NtQueryEaFile/definition b/patches/ntdll-NtQueryEaFile/definition index e6a29ec6..c3a4b643 100644 --- a/patches/ntdll-NtQueryEaFile/definition +++ b/patches/ntdll-NtQueryEaFile/definition @@ -1,2 +1 @@ Fixes: Improve stub for NtQueryEaFile -Depends: ntdll-Empty_Path diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 20c996b0..e7e502ad 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "781b88b7c586fc295780f0c8ad76bda0ffe96cd1" + echo "9bd963065b1fb7b445d010897d5f84967eadf75b" } # Show version information @@ -99,7 +99,6 @@ patch_enable_all () enable_configure_Absolute_RPATH="$1" enable_crypt32_CMS_Certificates="$1" enable_crypt32_CryptUnprotectMemory="$1" - enable_d3d8_D3DSWAPEFFECT_COPY_VSYNC="$1" enable_d3d9_DesktopWindow="$1" enable_d3d9_Skip_Tests="$1" enable_d3d9_Surface_Refcount="$1" @@ -164,7 +163,6 @@ patch_enable_all () enable_kernel32_Profile="$1" enable_kernel32_SetFileCompletionNotificationModes="$1" enable_kernel32_SetFileInformationByHandle="$1" - enable_kernel32_ThreadGroupAffinity="$1" enable_kernel32_TimezoneInformation_Registry="$1" enable_kernel32_VerifyVersionInfo="$1" enable_libs_Debug_Channel="$1" @@ -190,7 +188,6 @@ patch_enable_all () enable_ntdll_Dealloc_Thread_Stack="$1" enable_ntdll_DeviceType_Systemroot="$1" enable_ntdll_DllRedirects="$1" - enable_ntdll_Empty_Path="$1" enable_ntdll_Exception="$1" enable_ntdll_FileDispositionInformation="$1" enable_ntdll_FileFsFullSizeInformation="$1" @@ -231,7 +228,6 @@ patch_enable_all () enable_riched20_IText_Interface="$1" enable_rpcrt4_Pipe_Transport="$1" enable_secur32_ANSI_NTLM_Credentials="$1" - enable_server_Address_List_Change="$1" enable_server_ClipCursor="$1" enable_server_CreateProcess_ACLs="$1" enable_server_Delete_On_Close="$1" @@ -399,9 +395,6 @@ patch_enable () crypt32-CryptUnprotectMemory) enable_crypt32_CryptUnprotectMemory="$2" ;; - d3d8-D3DSWAPEFFECT_COPY_VSYNC) - enable_d3d8_D3DSWAPEFFECT_COPY_VSYNC="$2" - ;; d3d9-DesktopWindow) enable_d3d9_DesktopWindow="$2" ;; @@ -594,9 +587,6 @@ patch_enable () kernel32-SetFileInformationByHandle) enable_kernel32_SetFileInformationByHandle="$2" ;; - kernel32-ThreadGroupAffinity) - enable_kernel32_ThreadGroupAffinity="$2" - ;; kernel32-TimezoneInformation_Registry) enable_kernel32_TimezoneInformation_Registry="$2" ;; @@ -672,9 +662,6 @@ patch_enable () ntdll-DllRedirects) enable_ntdll_DllRedirects="$2" ;; - ntdll-Empty_Path) - enable_ntdll_Empty_Path="$2" - ;; ntdll-Exception) enable_ntdll_Exception="$2" ;; @@ -795,9 +782,6 @@ patch_enable () secur32-ANSI_NTLM_Credentials) enable_secur32_ANSI_NTLM_Credentials="$2" ;; - server-Address_List_Change) - enable_server_Address_List_Change="$2" - ;; server-ClipCursor) enable_server_ClipCursor="$2" ;; @@ -1595,9 +1579,6 @@ if test "$enable_category_stable" -eq 1; then if test "$enable_opengl32_Revert_Disable_Ext" -gt 1; then abort "Patchset opengl32-Revert_Disable_Ext disabled, but category-stable depends on that." fi - if test "$enable_server_Address_List_Change" -gt 1; then - abort "Patchset server-Address_List_Change disabled, but category-stable depends on that." - fi if test "$enable_server_ClipCursor" -gt 1; then abort "Patchset server-ClipCursor disabled, but category-stable depends on that." fi @@ -1728,7 +1709,6 @@ if test "$enable_category_stable" -eq 1; then enable_ntdll_User_Shared_Data=1 enable_ntdll_WriteWatches=1 enable_opengl32_Revert_Disable_Ext=1 - enable_server_Address_List_Change=1 enable_server_ClipCursor=1 enable_server_CreateProcess_ACLs=1 enable_server_Delete_On_Close=1 @@ -1911,13 +1891,6 @@ if test "$enable_ntdll_Junction_Points" -eq 1; then enable_ntdll_NtQueryEaFile=1 fi -if test "$enable_ntdll_NtQueryEaFile" -eq 1; then - if test "$enable_ntdll_Empty_Path" -gt 1; then - abort "Patchset ntdll-Empty_Path disabled, but ntdll-NtQueryEaFile depends on that." - fi - enable_ntdll_Empty_Path=1 -fi - if test "$enable_ntdll_Fix_Alignment" -eq 1; then if test "$enable_ntdll_Virtual_Memory_Stack" -gt 1; then abort "Patchset ntdll-Virtual_Memory_Stack disabled, but ntdll-Fix_Alignment depends on that." @@ -2446,21 +2419,6 @@ if test "$enable_crypt32_CryptUnprotectMemory" -eq 1; then ) >> "$patchlist" fi -# Patchset d3d8-D3DSWAPEFFECT_COPY_VSYNC -# | -# | This patchset fixes the following Wine bugs: -# | * [#39281] Implement semi-stub for d3d8 swapchain effect D3DSWAPEFFECT_COPY_VSYNC -# | -# | Modified files: -# | * dlls/d3d8/device.c -# | -if test "$enable_d3d8_D3DSWAPEFFECT_COPY_VSYNC" -eq 1; then - patch_apply d3d8-D3DSWAPEFFECT_COPY_VSYNC/0001-d3d8-Handle-D3DSWAPEFFECT_COPY_VSYNC-swapchain-effec.patch - ( - echo '+ { "Sebastian Lackner", "d3d8: Handle D3DSWAPEFFECT_COPY_VSYNC swapchain effect like D3DSWAPEFFECT_COPY.", 1 },'; - ) >> "$patchlist" -fi - # Patchset d3d9-DesktopWindow # | # | Modified files: @@ -3651,24 +3609,6 @@ if test "$enable_kernel32_SetFileCompletionNotificationModes" -eq 1; then ) >> "$patchlist" fi -# Patchset kernel32-ThreadGroupAffinity -# | -# | This patchset fixes the following Wine bugs: -# | * [#36549] Implement {Set,Get}ThreadGroupAffinity and related ntdll functions -# | -# | Modified files: -# | * dlls/kernel32/kernel32.spec, dlls/kernel32/tests/thread.c, dlls/kernel32/thread.c, dlls/ntdll/thread.c, -# | include/winternl.h -# | -if test "$enable_kernel32_ThreadGroupAffinity" -eq 1; then - patch_apply kernel32-ThreadGroupAffinity/0001-ntdll-Implement-ThreadGroupInformation-class.patch - patch_apply kernel32-ThreadGroupAffinity/0002-kernel32-Implement-Set-GetThreadGroupAffinity.patch - ( - echo '+ { "Michael Müller", "ntdll: Implement ThreadGroupInformation class.", 1 },'; - echo '+ { "Michael Müller", "kernel32: Implement Set/GetThreadGroupAffinity.", 1 },'; - ) >> "$patchlist" -fi - # Patchset kernel32-TimezoneInformation_Registry # | # | Modified files: @@ -4095,21 +4035,6 @@ if test "$enable_ntdll_DllRedirects" -eq 1; then ) >> "$patchlist" fi -# Patchset ntdll-Empty_Path -# | -# | This patchset fixes the following Wine bugs: -# | * [#39133] Return STATUS_OBJECT_NAME_INVALID in wine_nt_to_unix_file_name for paths that only contain a prefix -# | -# | Modified files: -# | * dlls/kernel32/tests/file.c, dlls/ntdll/directory.c, dlls/ntdll/tests/file.c -# | -if test "$enable_ntdll_Empty_Path" -eq 1; then - patch_apply ntdll-Empty_Path/0001-ntdll-Return-STATUS_OBJECT_NAME_INVALID-in-wine_nt_t.patch - ( - echo '+ { "Michael Müller", "ntdll: Return STATUS_OBJECT_NAME_INVALID in wine_nt_to_unix_file_name for paths that only contain a prefix.", 1 },'; - ) >> "$patchlist" -fi - # Patchset ntdll-Exception # | # | Modified files: @@ -4225,9 +4150,6 @@ fi # Patchset ntdll-NtQueryEaFile # | -# | This patchset has the following (direct or indirect) dependencies: -# | * ntdll-Empty_Path -# | # | Modified files: # | * dlls/ntdll/file.c, dlls/ntdll/tests/file.c # | @@ -4241,7 +4163,7 @@ fi # Patchset ntdll-Junction_Points # | # | This patchset has the following (direct or indirect) dependencies: -# | * ntdll-Fix_Free, ntdll-Empty_Path, ntdll-NtQueryEaFile +# | * ntdll-Fix_Free, ntdll-NtQueryEaFile # | # | This patchset fixes the following Wine bugs: # | * [#12401] Support for Junction Points @@ -4749,21 +4671,6 @@ if test "$enable_secur32_ANSI_NTLM_Credentials" -eq 1; then ) >> "$patchlist" fi -# Patchset server-Address_List_Change -# | -# | This patchset fixes the following Wine bugs: -# | * [#38062] Support for non-blocking SIO_ADDRESS_LIST_CHANGE requests -# | -# | Modified files: -# | * server/sock.c -# | -if test "$enable_server_Address_List_Change" -eq 1; then - patch_apply server-Address_List_Change/0001-server-Return-STATUS_CANT_WAIT-WSAEWOULDBLOCK-for-no.patch - ( - echo '+ { "Erich E. Hoover", "server: Return STATUS_CANT_WAIT/WSAEWOULDBLOCK for non-overlapped SIO_ADDRESS_LIST_CHANGE requests on non-blocking sockets.", 1 },'; - ) >> "$patchlist" -fi - # Patchset server-ClipCursor # | # | This patchset fixes the following Wine bugs: diff --git a/patches/server-Address_List_Change/0001-server-Return-STATUS_CANT_WAIT-WSAEWOULDBLOCK-for-no.patch b/patches/server-Address_List_Change/0001-server-Return-STATUS_CANT_WAIT-WSAEWOULDBLOCK-for-no.patch deleted file mode 100644 index 883f6fd8..00000000 --- a/patches/server-Address_List_Change/0001-server-Return-STATUS_CANT_WAIT-WSAEWOULDBLOCK-for-no.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 9d55100d71863cfcbf71114d3578be1d58f74377 Mon Sep 17 00:00:00 2001 -From: "Erich E. Hoover" -Date: Fri, 20 Feb 2015 14:03:34 -0700 -Subject: server: Return STATUS_CANT_WAIT/WSAEWOULDBLOCK for non-overlapped - SIO_ADDRESS_LIST_CHANGE requests on non-blocking sockets. - ---- - server/sock.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/server/sock.c b/server/sock.c -index 67d6416..1767dea 100644 ---- a/server/sock.c -+++ b/server/sock.c -@@ -546,6 +546,11 @@ obj_handle_t sock_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *a - switch(code) - { - case WS_SIO_ADDRESS_LIST_CHANGE: -+ if ((sock->state & FD_WINE_NONBLOCKING) && !blocking) -+ { -+ set_error( STATUS_CANT_WAIT ); -+ return 0; -+ } - if (!(ifchange_q = sock_get_ifchange_q( sock ))) return 0; - if (!(async = create_async( current, ifchange_q, async_data ))) return 0; - if (blocking) wait_handle = alloc_handle( current->process, async, SYNCHRONIZE, 0 ); --- -2.4.0 - diff --git a/patches/server-Address_List_Change/definition b/patches/server-Address_List_Change/definition deleted file mode 100644 index 2c867646..00000000 --- a/patches/server-Address_List_Change/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: [38062] Support for non-blocking SIO_ADDRESS_LIST_CHANGE requests -Category: stable