diff --git a/patches/api-ms-win-Stub_DLLs/0001-kernelbase-Add-dll-and-add-stub-for-QuirkIsEnabled.patch b/patches/api-ms-win-Stub_DLLs/0001-kernelbase-Add-dll-and-add-stub-for-QuirkIsEnabled.patch index d01e6a7d..b64ab4d5 100644 --- a/patches/api-ms-win-Stub_DLLs/0001-kernelbase-Add-dll-and-add-stub-for-QuirkIsEnabled.patch +++ b/patches/api-ms-win-Stub_DLLs/0001-kernelbase-Add-dll-and-add-stub-for-QuirkIsEnabled.patch @@ -1,17 +1,30 @@ -From 16ca16e67d52e1713bc8d5a661a9213fe0ac4913 Mon Sep 17 00:00:00 2001 +From e02790b9f90a8f6f65e50543de94861850d90177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Fri, 15 Jan 2016 13:01:15 +0100 Subject: kernelbase: Add dll and add stub for QuirkIsEnabled. --- - dlls/kernelbase/Makefile.in | 3 + - dlls/kernelbase/kernelbase.spec | 1127 ++++++++++++++++++++++++++++++++++++++- - dlls/kernelbase/misc.c | 37 ++ - dlls/shlwapi/shlwapi.spec | 2 +- - tools/make_specfiles | 1 + - 5 files changed, 1153 insertions(+), 17 deletions(-) + .../api-ms-win-core-quirks-l1-1-0.spec | 2 +- + dlls/kernelbase/Makefile.in | 3 + + dlls/kernelbase/kernelbase.spec | 1127 +++++++++++++++++++- + dlls/kernelbase/misc.c | 37 + + dlls/shlwapi/shlwapi.spec | 2 +- + tools/make_specfiles | 1 + + 6 files changed, 1154 insertions(+), 18 deletions(-) create mode 100644 dlls/kernelbase/misc.c +diff --git a/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec +index 761120f6f6..54ce373b96 100644 +--- a/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec ++++ b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec +@@ -1,6 +1,6 @@ + @ stub QuirkGetData + @ stub QuirkGetData2 +-@ stub QuirkIsEnabled ++@ stdcall QuirkIsEnabled(ptr) kernelbase.QuirkIsEnabled + @ stub QuirkIsEnabled2 + @ stub QuirkIsEnabled3 + @ stub QuirkIsEnabledForPackage diff --git a/dlls/kernelbase/Makefile.in b/dlls/kernelbase/Makefile.in index b9caed090b..2beb34bafd 100644 --- a/dlls/kernelbase/Makefile.in @@ -1770,10 +1783,10 @@ index 6b6ead2696..7c2a9d117e 100644 422 stdcall -noname SHGlobalCounterCreateNamedA(str long) 423 stdcall -noname SHGlobalCounterCreateNamedW(wstr long) diff --git a/tools/make_specfiles b/tools/make_specfiles -index 404af769d2..5de2d5cec9 100755 +index bd0314ff15..770e2f6c21 100755 --- a/tools/make_specfiles +++ b/tools/make_specfiles -@@ -249,6 +249,7 @@ my @dll_groups = +@@ -250,6 +250,7 @@ my @dll_groups = [ "kernel32", "advapi32", diff --git a/patches/api-ms-win-Stub_DLLs/0002-api-ms-win-core-quirks-l1-1-0-Add-dll.patch b/patches/api-ms-win-Stub_DLLs/0002-api-ms-win-core-quirks-l1-1-0-Add-dll.patch deleted file mode 100644 index dc623e2f..00000000 --- a/patches/api-ms-win-Stub_DLLs/0002-api-ms-win-core-quirks-l1-1-0-Add-dll.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 97744349e9a23aa024910d87a89bd94652db4914 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Fri, 15 Jan 2016 13:07:09 +0100 -Subject: api-ms-win-core-quirks-l1-1-0: Add dll. - ---- - configure.ac | 1 + - dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in | 1 + - .../api-ms-win-core-quirks-l1-1-0.spec | 8 ++++++++ - tools/make_specfiles | 4 ++++ - 4 files changed, 14 insertions(+) - create mode 100644 dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in - create mode 100644 dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec - -diff --git a/configure.ac b/configure.ac -index 84316f9..e826dd0 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2720,6 +2720,7 @@ WINE_CONFIG_DLL(api-ms-win-core-processthreads-l1-1-2) - WINE_CONFIG_DLL(api-ms-win-core-profile-l1-1-0) - WINE_CONFIG_DLL(api-ms-win-core-psapi-l1-1-0) - WINE_CONFIG_DLL(api-ms-win-core-psapi-obsolete-l1-1-0) -+WINE_CONFIG_DLL(api-ms-win-core-quirks-l1-1-0) - WINE_CONFIG_DLL(api-ms-win-core-realtime-l1-1-0) - WINE_CONFIG_DLL(api-ms-win-core-registry-l1-1-0) - WINE_CONFIG_DLL(api-ms-win-core-registryuserspecific-l1-1-0) -diff --git a/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in b/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in -new file mode 100644 -index 0000000..9486e8b ---- /dev/null -+++ b/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in -@@ -0,0 +1 @@ -+MODULE = api-ms-win-core-quirks-l1-1-0.dll -diff --git a/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec -new file mode 100644 -index 0000000..54ce373 ---- /dev/null -+++ b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec -@@ -0,0 +1,8 @@ -+@ stub QuirkGetData -+@ stub QuirkGetData2 -+@ stdcall QuirkIsEnabled(ptr) kernelbase.QuirkIsEnabled -+@ stub QuirkIsEnabled2 -+@ stub QuirkIsEnabled3 -+@ stub QuirkIsEnabledForPackage -+@ stub QuirkIsEnabledForPackage2 -+@ stub QuirkIsEnabledForProcess -diff --git a/tools/make_specfiles b/tools/make_specfiles -index eba8548..609f7a0 100755 ---- a/tools/make_specfiles -+++ b/tools/make_specfiles -@@ -239,6 +239,10 @@ my @dll_groups = - "api-ms-win-core-bem-l1-1-0", - ], - [ -+ "kernelbase", -+ "api-ms-win-core-quirks-l1-1-0", -+ ], -+ [ - "ole32", - "api-ms-win-downlevel-ole32-l1-1-0", - "api-ms-win-core-com-l1-1-0", --- -2.9.0 - diff --git a/patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch b/patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch index 21aad1c7..bb739254 100644 --- a/patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch +++ b/patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch @@ -1,17 +1,17 @@ -From aefdbc0fabb66052164ecd45fecfb0b947a130ac Mon Sep 17 00:00:00 2001 +From b9d73e9b13df905bfab65d07babae2f40469c405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Tue, 12 Apr 2016 01:02:34 +0200 Subject: uiautomationcore: Add dll and stub some functions. --- dlls/uiautomationcore/Makefile.in | 1 + - dlls/uiautomationcore/uia_main.c | 89 ++++++++++++++++++++++++++++- - dlls/uiautomationcore/uiautomationcore.spec | 14 +++-- - include/uiautomationcoreapi.h | 16 ++++++ - 4 files changed, 114 insertions(+), 6 deletions(-) + dlls/uiautomationcore/uia_main.c | 65 +++++++++++++++++++++++++---- + dlls/uiautomationcore/uiautomationcore.spec | 8 +++- + include/uiautomationcoreapi.h | 10 +++-- + 4 files changed, 72 insertions(+), 12 deletions(-) diff --git a/dlls/uiautomationcore/Makefile.in b/dlls/uiautomationcore/Makefile.in -index 78d6254a015..029fc2e4995 100644 +index 78d6254a01..029fc2e499 100644 --- a/dlls/uiautomationcore/Makefile.in +++ b/dlls/uiautomationcore/Makefile.in @@ -1,4 +1,5 @@ @@ -21,7 +21,7 @@ index 78d6254a015..029fc2e4995 100644 C_SRCS = \ uia_main.c diff --git a/dlls/uiautomationcore/uia_main.c b/dlls/uiautomationcore/uia_main.c -index 994d8e6080b..f1429faeff9 100644 +index af986810f5..0f1e84450c 100644 --- a/dlls/uiautomationcore/uia_main.c +++ b/dlls/uiautomationcore/uia_main.c @@ -1,4 +1,5 @@ @@ -30,20 +30,15 @@ index 994d8e6080b..f1429faeff9 100644 * Copyright 2017 Jacek Caban for CodeWeavers * * This library is free software; you can redistribute it and/or -@@ -16,7 +17,11 @@ +@@ -16,6 +17,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ --#include "uiautomationcore.h" -+#include -+#include "windef.h" -+#include "winbase.h" +#define COBJMACROS -+#include "uiautomationcoreapi.h" + #include "uiautomation.h" #include "wine/debug.h" - -@@ -37,11 +42,91 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, void *lpv) +@@ -37,12 +39,61 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, void *lpv) return TRUE; } @@ -87,37 +82,6 @@ index 994d8e6080b..f1429faeff9 100644 +static IUnknown dummy = { &dummy_Vtbl }; + +/*********************************************************************** -+ * UiaLookupId (uiautomationcore.@) -+ */ -+int WINAPI UiaLookupId(AutomationIdentifierType type, const GUID *guid) -+{ -+ FIXME("(%d, %s)\n", type, debugstr_guid(guid)); -+ return 1; -+} -+ -+/*********************************************************************** -+ * UiaGetReservedMixedAttributeValue (uiautomationcore.@) -+ */ -+HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value) -+{ -+ FIXME("(%p): stub\n", value); -+ -+ *value = &dummy; -+ return S_OK; -+} -+ -+/*********************************************************************** -+ * UiaGetReservedNotSupportedValue (uiautomationcore.@) -+ */ -+HRESULT WINAPI UiaGetReservedNotSupportedValue(IUnknown **value) -+{ -+ FIXME("(%p): stub\n", value); -+ -+ *value = &dummy; -+ return S_OK; -+} -+ -+/*********************************************************************** + * UiaReturnRawElementProvider (uiautomationcore.@) + */ +LRESULT WINAPI UiaReturnRawElementProvider(HWND hwnd, WPARAM wparam, LPARAM lparam, @@ -136,11 +100,44 @@ index 994d8e6080b..f1429faeff9 100644 + FIXME("(): stub\n"); return FALSE; } + +@@ -51,8 +102,8 @@ BOOL WINAPI UiaClientsAreListening(void) + */ + HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value) + { +- FIXME("(%p) stub!\n", value); +- *value = NULL; ++ FIXME("(%p): stub!\n", value); ++ *value = &dummy; + return S_OK; + } + +@@ -61,16 +112,16 @@ HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value) + */ + HRESULT WINAPI UiaGetReservedNotSupportedValue(IUnknown **value) + { +- FIXME("(%p) stub!\n", value); +- *value = NULL; ++ FIXME("(%p): stub!\n", value); ++ *value = &dummy; + return S_OK; + } + + /*********************************************************************** + * UiaLookupId (uiautomationcore.@) + */ +-int WINAPI UiaLookupId(enum AutomationIdentifierType type, const GUID *guid) ++int WINAPI UiaLookupId(AutomationIdentifierType type, const GUID *guid) + { +- FIXME("(%d, %s) stub!\n", type, debugstr_guid(guid)); ++ FIXME("(%d, %s): stub!\n", type, debugstr_guid(guid)); + return 1; + } diff --git a/dlls/uiautomationcore/uiautomationcore.spec b/dlls/uiautomationcore/uiautomationcore.spec -index 3026001b6b7..221711c41d2 100644 +index ddf84f63c0..221711c41d 100644 --- a/dlls/uiautomationcore/uiautomationcore.spec +++ b/dlls/uiautomationcore/uiautomationcore.spec -@@ -53,14 +53,16 @@ +@@ -53,6 +53,8 @@ @ stub TransformPattern_Rotate @ stub UiaAddEvent @ stdcall UiaClientsAreListening() @@ -149,26 +146,14 @@ index 3026001b6b7..221711c41d2 100644 @ stub UiaEventAddWindow @ stub UiaEventRemoveWindow @ stub UiaFind - @ stub UiaGetErrorDescription - @ stub UiaGetPatternProvider - @ stub UiaGetPropertyValue --@ stub UiaGetReservedMixedAttributeValue --@ stub UiaGetReservedNotSupportedValue -+@ stdcall UiaGetReservedMixedAttributeValue(ptr) -+@ stdcall UiaGetReservedNotSupportedValue(ptr) - @ stub UiaGetRootNode - @ stub UiaGetRuntimeId - @ stub UiaGetUpdatedCache -@@ -69,7 +71,8 @@ +@@ -69,6 +71,7 @@ @ stub UiaHUiaNodeFromVariant @ stub UiaHasServerSideProvider @ stub UiaHostProviderFromHwnd --@ stub UiaLookupId +@ stub UiaIAccessibleFromProvider -+@ stdcall UiaLookupId(long ptr) + @ stdcall UiaLookupId(long ptr) @ stub UiaNavigate @ stub UiaNodeFromFocus - @ stub UiaNodeFromHandle @@ -77,13 +80,16 @@ @ stub UiaNodeFromProvider @ stub UiaNodeRelease @@ -188,42 +173,32 @@ index 3026001b6b7..221711c41d2 100644 @ stub UiaTextRangeRelease @ stub ValuePattern_SetValue diff --git a/include/uiautomationcoreapi.h b/include/uiautomationcoreapi.h -index 340f5005db4..b9107ceb792 100644 +index fbe47ad184..8d13a16c53 100644 --- a/include/uiautomationcoreapi.h +++ b/include/uiautomationcoreapi.h -@@ -19,6 +19,8 @@ - #ifndef _INC_UIAUTOMATIONCOREAPI - #define _INC_UIAUTOMATIONCOREAPI - -+#include "uiautomationcore.h" -+ - #ifdef __cplusplus - extern "C" { - #endif -@@ -34,6 +36,16 @@ extern "C" { - #define UiaAppendRuntimeId 3 - #define UiaRootObjectId -25 +@@ -39,20 +39,22 @@ DECLARE_HANDLE(HUIAPATTERNOBJECT); + DECLARE_HANDLE(HUIATEXTRANGE); + DECLARE_HANDLE(HUIAEVENT); +-enum AutomationIdentifierType +typedef enum AutomationIdentifierType -+{ -+ AutomationIdentifierType_Property, -+ AutomationIdentifierType_Pattern, -+ AutomationIdentifierType_Event, -+ AutomationIdentifierType_ControlType, + { + AutomationIdentifierType_Property, + AutomationIdentifierType_Pattern, + AutomationIdentifierType_Event, + AutomationIdentifierType_ControlType, +- AutomationIdentifierType_TextAttribute +-}; + AutomationIdentifierType_TextAttribute, + AutomationIdentifierType_LandmarkType, +} AutomationIdentifierType; -+ - DECLARE_HANDLE(HUIANODE); - DECLARE_HANDLE(HUIAPATTERNOBJECT); - DECLARE_HANDLE(HUIATEXTRANGE); -@@ -41,6 +53,10 @@ DECLARE_HANDLE(HUIAEVENT); + HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value); + HRESULT WINAPI UiaGetReservedNotSupportedValue(IUnknown **value); +-int WINAPI UiaLookupId(enum AutomationIdentifierType type, const GUID *guid); ++int WINAPI UiaLookupId(AutomationIdentifierType type, const GUID *guid); BOOL WINAPI UiaPatternRelease(HUIAPATTERNOBJECT hobj); BOOL WINAPI UiaTextRangeRelease(HUIATEXTRANGE hobj); -+int WINAPI UiaLookupId(AutomationIdentifierType type, const GUID *guid); -+HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value); -+HRESULT WINAPI UiaGetReservedNotSupportedValue(IUnknown **value); +LRESULT WINAPI UiaReturnRawElementProvider(HWND hwnd, WPARAM wparam, LPARAM lparam, IRawElementProviderSimple *provider); #ifdef __cplusplus diff --git a/patches/kernel32-Named_Pipe/0006-ntdll-Move-logic-to-check-for-broken-pipe-into-a-sep.patch b/patches/kernel32-Named_Pipe/0006-ntdll-Move-logic-to-check-for-broken-pipe-into-a-sep.patch index d66aa2be..11368b8f 100644 --- a/patches/kernel32-Named_Pipe/0006-ntdll-Move-logic-to-check-for-broken-pipe-into-a-sep.patch +++ b/patches/kernel32-Named_Pipe/0006-ntdll-Move-logic-to-check-for-broken-pipe-into-a-sep.patch @@ -1,4 +1,4 @@ -From 32d3c69ae680a7b6f71e203ca33f882eb0b69c47 Mon Sep 17 00:00:00 2001 +From a469c846c5e2abc7a0a4c478b33aeaa83e53f6bb Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 15 Aug 2014 23:06:06 +0200 Subject: ntdll: Move logic to check for broken pipe into a separate function. @@ -8,10 +8,10 @@ Subject: ntdll: Move logic to check for broken pipe into a separate function. 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c -index a20c3e8..8de4b98 100644 +index 41dd1ae877..03864b7239 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c -@@ -411,6 +411,31 @@ NTSTATUS FILE_GetNtStatus(void) +@@ -490,6 +490,31 @@ NTSTATUS FILE_GetNtStatus(void) } } @@ -43,9 +43,9 @@ index a20c3e8..8de4b98 100644 /* helper function for NtReadFile and FILE_AsyncReadService */ static NTSTATUS read_unix_fd(int fd, char *buf, ULONG *total, ULONG length, enum server_fd_type type, BOOL avail_mode) -@@ -1557,44 +1582,22 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc - if ((status = server_get_unix_fd( handle, FILE_READ_DATA, &fd, &needs_close, NULL, NULL ))) +@@ -1719,44 +1744,22 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc break; + } -#ifdef FIONREAD - if (ioctl( fd, FIONREAD, &avail ) != 0) @@ -103,5 +103,5 @@ index a20c3e8..8de4b98 100644 } if (needs_close) close( fd ); -- -2.1.3 +2.11.0 diff --git a/patches/kernel32-Named_Pipe/0019-server-Return-correct-error-codes-for-NtWriteFile-wh.patch b/patches/kernel32-Named_Pipe/0019-server-Return-correct-error-codes-for-NtWriteFile-wh.patch index ab91a5da..a778a07e 100644 --- a/patches/kernel32-Named_Pipe/0019-server-Return-correct-error-codes-for-NtWriteFile-wh.patch +++ b/patches/kernel32-Named_Pipe/0019-server-Return-correct-error-codes-for-NtWriteFile-wh.patch @@ -1,4 +1,4 @@ -From 3f96971d0d54e5d32a57970c36cb55e3ad6ff7c8 Mon Sep 17 00:00:00 2001 +From bb9a6f2fb4431cb18e2a835808c02156bbd9d709 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 6 Jun 2015 01:21:05 +0200 Subject: server: Return correct error codes for NtWriteFile when pipes are @@ -25,7 +25,7 @@ index ba365ed666..23f1a5f5f5 100644 CloseHandle(hfile); diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c -index 899ebddabb..91316bd2c4 100644 +index 98a699e48f..25f59761cf 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -1235,6 +1235,9 @@ static NTSTATUS write_unix_fd(int fd, const char *buf, ULONG *total, ULONG lengt @@ -39,10 +39,10 @@ index 899ebddabb..91316bd2c4 100644 } } diff --git a/server/named_pipe.c b/server/named_pipe.c -index 74a9a44dcf..9a8d8b37ca 100644 +index d310740165..2775fcab51 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c -@@ -119,6 +119,8 @@ struct named_pipe_device +@@ -129,6 +129,8 @@ struct named_pipe_device struct namespace *pipes; /* named pipe namespace */ }; @@ -51,7 +51,7 @@ index 74a9a44dcf..9a8d8b37ca 100644 static void named_pipe_dump( struct object *obj, int verbose ); static unsigned int named_pipe_map_access( struct object *obj, unsigned int access ); static int named_pipe_link_name( struct object *obj, struct object_name *name, struct object *parent ); -@@ -155,6 +157,7 @@ static void pipe_end_queue_async( struct fd *fd, struct async *async, int type, +@@ -167,6 +169,7 @@ static void pipe_end_reselect_async( struct fd *fd, struct async_queue *queue ); /* server end functions */ static void pipe_server_dump( struct object *obj, int verbose ); static struct fd *pipe_server_get_fd( struct object *obj ); @@ -59,7 +59,7 @@ index 74a9a44dcf..9a8d8b37ca 100644 static void pipe_server_destroy( struct object *obj); static obj_handle_t pipe_server_flush( struct fd *fd, struct async *async, int blocking ); static enum server_fd_type pipe_server_get_fd_type( struct fd *fd ); -@@ -180,7 +183,7 @@ static const struct object_ops pipe_server_ops = +@@ -192,7 +195,7 @@ static const struct object_ops pipe_server_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_alloc_handle, /* alloc_handle */ @@ -68,15 +68,15 @@ index 74a9a44dcf..9a8d8b37ca 100644 pipe_server_destroy /* destroy */ }; -@@ -201,6 +204,7 @@ static const struct fd_ops pipe_server_fd_ops = +@@ -213,6 +216,7 @@ static const struct fd_ops pipe_server_fd_ops = static void pipe_client_dump( struct object *obj, int verbose ); static int pipe_client_signaled( struct object *obj, struct wait_queue_entry *entry ); static struct fd *pipe_client_get_fd( struct object *obj ); +static int pipe_client_close_handle( struct object *obj, struct process *process, obj_handle_t handle ); static void pipe_client_destroy( struct object *obj ); static obj_handle_t pipe_client_flush( struct fd *fd, struct async *async, int blocking ); - static enum server_fd_type pipe_client_get_fd_type( struct fd *fd ); -@@ -224,7 +228,7 @@ static const struct object_ops pipe_client_ops = + static obj_handle_t pipe_client_ioctl( struct fd *fd, ioctl_code_t code, struct async *async, +@@ -238,7 +242,7 @@ static const struct object_ops pipe_client_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_alloc_handle, /* alloc_handle */ @@ -85,8 +85,8 @@ index 74a9a44dcf..9a8d8b37ca 100644 pipe_client_destroy /* destroy */ }; -@@ -418,6 +422,23 @@ static void do_disconnect( struct pipe_server *server ) - server->pipe_end.fd = NULL; +@@ -482,6 +486,23 @@ static void pipe_end_destroy( struct pipe_end *pipe_end ) + free_async_queue( pipe_end->write_q ); } +static int pipe_server_close_handle( struct object *obj, struct process *process, obj_handle_t handle ) @@ -109,7 +109,7 @@ index 74a9a44dcf..9a8d8b37ca 100644 static void pipe_server_destroy( struct object *obj) { struct pipe_server *server = (struct pipe_server *)obj; -@@ -446,6 +467,24 @@ static void pipe_server_destroy( struct object *obj) +@@ -511,6 +532,24 @@ static void pipe_server_destroy( struct object *obj) release_object( server->pipe ); } @@ -135,10 +135,10 @@ index 74a9a44dcf..9a8d8b37ca 100644 { struct pipe_client *client = (struct pipe_client *)obj; diff --git a/server/protocol.def b/server/protocol.def -index e7a55d7a2d..f1e7af1d56 100644 +index 341a6f6085..9769bb9e7b 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -2427,6 +2427,7 @@ enum message_type +@@ -2431,6 +2431,7 @@ enum message_type #define NAMED_PIPE_MESSAGE_STREAM_WRITE 0x0001 #define NAMED_PIPE_MESSAGE_STREAM_READ 0x0002 #define NAMED_PIPE_NONBLOCKING_MODE 0x0004 diff --git a/patches/kernel32-Named_Pipe/0021-server-Do-not-allow-to-queue-async-operation-for-bro.patch b/patches/kernel32-Named_Pipe/0021-server-Do-not-allow-to-queue-async-operation-for-bro.patch index 76a32c72..5fcdee92 100644 --- a/patches/kernel32-Named_Pipe/0021-server-Do-not-allow-to-queue-async-operation-for-bro.patch +++ b/patches/kernel32-Named_Pipe/0021-server-Do-not-allow-to-queue-async-operation-for-bro.patch @@ -1,4 +1,4 @@ -From a5a9edf432ca2aecef11db6bde388730cc9eadf8 Mon Sep 17 00:00:00 2001 +From 657d43d3027ea116d3348542eac23d1d915258f0 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Wed, 24 Feb 2016 15:45:09 +0100 Subject: server: Do not allow to queue async operation for broken pipes. @@ -8,10 +8,10 @@ Subject: server: Do not allow to queue async operation for broken pipes. 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/server/named_pipe.c b/server/named_pipe.c -index 9a8d8b37ca..df9f5c4926 100644 +index 2775fcab51..3542c91b4a 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c -@@ -665,8 +665,20 @@ static obj_handle_t pipe_client_flush( struct fd *fd, struct async *async, int b +@@ -811,8 +811,20 @@ static obj_handle_t pipe_end_write( struct fd *fd, struct async *async, int bloc static void pipe_end_queue_async( struct fd *fd, struct async *async, int type, int count ) { struct pipe_end *pipe_end = get_fd_user( fd ); @@ -33,7 +33,7 @@ index 9a8d8b37ca..df9f5c4926 100644 + default_fd_queue_async( fd, async, type, count ); } - static inline int is_overlapped( unsigned int options ) + static void pipe_end_reselect_async( struct fd *fd, struct async_queue *queue ) -- 2.11.0 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 91a62655..82b5b5f4 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "5b4f8a385b46a8a8a8b09b8ca6578aa7b7995a1e" + echo "ec8485ec10e3c27b89ec5f1289bc8a3cdad5f3f6" } # Show version information @@ -2787,30 +2787,29 @@ fi # | # | Modified files: # | * configure.ac, dlls/api-ms-win-core-heap-l2-1-0/Makefile.in, dlls/api-ms-win-core-heap-l2-1-0/api-ms-win-core- -# | heap-l2-1-0.spec, dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in, dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core- -# | quirks-l1-1-0.spec, dlls/api-ms-win-core-shlwapi-obsolete-l1-2-0/Makefile.in, dlls/api-ms-win-core-shlwapi- -# | obsolete-l1-2-0/api-ms-win-core-shlwapi-obsolete-l1-2-0.spec, dlls/api-ms-win-rtcore-ntuser-draw-l1-1-0/Makefile.in, -# | dlls/api-ms-win-rtcore-ntuser-draw-l1-1-0/api-ms-win-rtcore-ntuser-draw-l1-1-0.spec, dlls/api-ms-win-rtcore-ntuser- -# | window-l1-1-0/Makefile.in, dlls/api-ms-win-rtcore-ntuser-window-l1-1-0/api-ms-win-rtcore-ntuser-window-l1-1-0.spec, dlls -# | /api-ms-win-shcore-obsolete-l1-1-0/Makefile.in, dlls/api-ms-win-shcore-obsolete-l1-1-0/api-ms-win-shcore- -# | obsolete-l1-1-0.spec, dlls/api-ms-win-shcore-stream-l1-1-0/Makefile.in, dlls/api-ms-win-shcore-stream-l1-1-0/api-ms-win- -# | shcore-stream-l1-1-0.spec, dlls/api-ms-win-shcore-thread-l1-1-0/Makefile.in, dlls/api-ms-win-shcore-thread-l1-1-0/api- -# | ms-win-shcore-thread-l1-1-0.spec, dlls/ext-ms-win-appmodel-usercontext-l1-1-0/Makefile.in, dlls/ext-ms-win-appmodel- -# | usercontext-l1-1-0/ext-ms-win-appmodel-usercontext-l1-1-0.spec, dlls/ext-ms-win-appmodel-usercontext-l1-1-0/main.c, dlls -# | /ext-ms-win-ntuser-mouse-l1-1-0/Makefile.in, dlls/ext-ms-win-ntuser-mouse-l1-1-0/ext-ms-win-ntuser-mouse-l1-1-0.spec, -# | dlls/ext-ms-win-rtcore-ntuser-syscolors-l1-1-0/Makefile.in, dlls/ext-ms-win-rtcore-ntuser-syscolors-l1-1-0/ext-ms-win- -# | rtcore-ntuser-syscolors-l1-1-0.spec, dlls/ext-ms-win-uxtheme-themes-l1-1-0/Makefile.in, dlls/ext-ms-win-uxtheme- -# | themes-l1-1-0/ext-ms-win-uxtheme-themes-l1-1-0.spec, dlls/ext-ms-win-xaml-pal-l1-1-0/Makefile.in, dlls/ext-ms-win-xaml- -# | pal-l1-1-0/ext-ms-win-xaml-pal-l1-1-0.spec, dlls/ext-ms-win-xaml-pal-l1-1-0/main.c, dlls/feclient/Makefile.in, -# | dlls/feclient/feclient.spec, dlls/feclient/main.c, dlls/iertutil/Makefile.in, dlls/iertutil/iertutil.spec, -# | dlls/iertutil/main.c, dlls/kernelbase/Makefile.in, dlls/kernelbase/kernelbase.spec, dlls/kernelbase/misc.c, -# | dlls/shcore/Makefile.in, dlls/shcore/main.c, dlls/shcore/shcore.spec, dlls/shlwapi/shlwapi.spec, -# | dlls/uiautomationcore/Makefile.in, dlls/uiautomationcore/uia_main.c, dlls/uiautomationcore/uiautomationcore.spec, -# | include/Makefile.in, include/shellscalingapi.h, include/uiautomationcoreapi.h, tools/make_specfiles +# | heap-l2-1-0.spec, dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec, dlls/api-ms-win-core-shlwapi- +# | obsolete-l1-2-0/Makefile.in, dlls/api-ms-win-core-shlwapi-obsolete-l1-2-0/api-ms-win-core-shlwapi-obsolete-l1-2-0.spec, +# | dlls/api-ms-win-rtcore-ntuser-draw-l1-1-0/Makefile.in, dlls/api-ms-win-rtcore-ntuser-draw-l1-1-0/api-ms-win-rtcore- +# | ntuser-draw-l1-1-0.spec, dlls/api-ms-win-rtcore-ntuser-window-l1-1-0/Makefile.in, dlls/api-ms-win-rtcore-ntuser- +# | window-l1-1-0/api-ms-win-rtcore-ntuser-window-l1-1-0.spec, dlls/api-ms-win-shcore-obsolete-l1-1-0/Makefile.in, dlls/api- +# | ms-win-shcore-obsolete-l1-1-0/api-ms-win-shcore-obsolete-l1-1-0.spec, dlls/api-ms-win-shcore-stream-l1-1-0/Makefile.in, +# | dlls/api-ms-win-shcore-stream-l1-1-0/api-ms-win-shcore-stream-l1-1-0.spec, dlls/api-ms-win-shcore- +# | thread-l1-1-0/Makefile.in, dlls/api-ms-win-shcore-thread-l1-1-0/api-ms-win-shcore-thread-l1-1-0.spec, dlls/ext-ms-win- +# | appmodel-usercontext-l1-1-0/Makefile.in, dlls/ext-ms-win-appmodel-usercontext-l1-1-0/ext-ms-win-appmodel- +# | usercontext-l1-1-0.spec, dlls/ext-ms-win-appmodel-usercontext-l1-1-0/main.c, dlls/ext-ms-win-ntuser- +# | mouse-l1-1-0/Makefile.in, dlls/ext-ms-win-ntuser-mouse-l1-1-0/ext-ms-win-ntuser-mouse-l1-1-0.spec, dlls/ext-ms-win- +# | rtcore-ntuser-syscolors-l1-1-0/Makefile.in, dlls/ext-ms-win-rtcore-ntuser-syscolors-l1-1-0/ext-ms-win-rtcore-ntuser- +# | syscolors-l1-1-0.spec, dlls/ext-ms-win-uxtheme-themes-l1-1-0/Makefile.in, dlls/ext-ms-win-uxtheme-themes-l1-1-0/ext-ms- +# | win-uxtheme-themes-l1-1-0.spec, dlls/ext-ms-win-xaml-pal-l1-1-0/Makefile.in, dlls/ext-ms-win-xaml-pal-l1-1-0/ext-ms-win- +# | xaml-pal-l1-1-0.spec, dlls/ext-ms-win-xaml-pal-l1-1-0/main.c, dlls/feclient/Makefile.in, dlls/feclient/feclient.spec, +# | dlls/feclient/main.c, dlls/iertutil/Makefile.in, dlls/iertutil/iertutil.spec, dlls/iertutil/main.c, +# | dlls/kernelbase/Makefile.in, dlls/kernelbase/kernelbase.spec, dlls/kernelbase/misc.c, dlls/shcore/Makefile.in, +# | dlls/shcore/main.c, dlls/shcore/shcore.spec, dlls/shlwapi/shlwapi.spec, dlls/uiautomationcore/Makefile.in, +# | dlls/uiautomationcore/uia_main.c, dlls/uiautomationcore/uiautomationcore.spec, include/Makefile.in, +# | include/shellscalingapi.h, include/uiautomationcoreapi.h, tools/make_specfiles # | if test "$enable_api_ms_win_Stub_DLLs" -eq 1; then patch_apply api-ms-win-Stub_DLLs/0001-kernelbase-Add-dll-and-add-stub-for-QuirkIsEnabled.patch - patch_apply api-ms-win-Stub_DLLs/0002-api-ms-win-core-quirks-l1-1-0-Add-dll.patch patch_apply api-ms-win-Stub_DLLs/0005-api-ms-win-core-heap-l2-1-0-Add-dll.patch patch_apply api-ms-win-Stub_DLLs/0006-iertutil-Add-dll-and-add-stub-for-ordinal-811.patch patch_apply api-ms-win-Stub_DLLs/0007-shcore-Add-dll.patch @@ -2834,7 +2833,6 @@ if test "$enable_api_ms_win_Stub_DLLs" -eq 1; then patch_apply api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch ( printf '%s\n' '+ { "Michael Müller", "kernelbase: Add dll and add stub for QuirkIsEnabled.", 1 },'; - printf '%s\n' '+ { "Michael Müller", "api-ms-win-core-quirks-l1-1-0: Add dll.", 1 },'; printf '%s\n' '+ { "Michael Müller", "api-ms-win-core-heap-l2-1-0: Add dll.", 1 },'; printf '%s\n' '+ { "Michael Müller", "iertutil: Add dll and add stub for ordinal 811.", 1 },'; printf '%s\n' '+ { "Sebastian Lackner", "shcore: Add dll.", 1 },'; diff --git a/patches/server-Pipe_ObjectName/0001-server-Store-a-reference-to-the-parent-object-for-pi.patch b/patches/server-Pipe_ObjectName/0001-server-Store-a-reference-to-the-parent-object-for-pi.patch index 75c3dcd0..588828be 100644 --- a/patches/server-Pipe_ObjectName/0001-server-Store-a-reference-to-the-parent-object-for-pi.patch +++ b/patches/server-Pipe_ObjectName/0001-server-Store-a-reference-to-the-parent-object-for-pi.patch @@ -1,4 +1,4 @@ -From 1e74c7027e966201f44742df6736e9cdc1ad4ee8 Mon Sep 17 00:00:00 2001 +From 85ccf78e42e8c913c71385fa8ff469d757fb5ffd Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 17 Aug 2015 01:11:47 +0200 Subject: server: Store a reference to the parent object for pipe servers. (v2) @@ -11,10 +11,10 @@ Subject: server: Store a reference to the parent object for pipe servers. (v2) 4 files changed, 53 insertions(+), 19 deletions(-) diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index 43c5ee46d7..9a1ba670ab 100644 +index b58f76365f..84b783b80a 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c -@@ -1487,14 +1487,11 @@ static void test_query_object(void) +@@ -1503,14 +1503,11 @@ static void test_query_object(void) status = pNtQueryObject( handle, ObjectNameInformation, buffer, sizeof(buffer), &len ); ok( status == STATUS_SUCCESS , "NtQueryObject returned %x\n", status ); str = (UNICODE_STRING *)buffer; @@ -30,10 +30,10 @@ index 43c5ee46d7..9a1ba670ab 100644 "name too short %s\n", wine_dbgstr_w(str->Buffer) ); trace( "got %s len %u\n", wine_dbgstr_w(str->Buffer), len ); diff --git a/server/named_pipe.c b/server/named_pipe.c -index df9f5c4926..5adbb2058b 100644 +index a7811c1185..3d19e6c42c 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c -@@ -157,6 +157,8 @@ static void pipe_end_queue_async( struct fd *fd, struct async *async, int type, +@@ -169,6 +169,8 @@ static void pipe_end_reselect_async( struct fd *fd, struct async_queue *queue ); /* server end functions */ static void pipe_server_dump( struct object *obj, int verbose ); static struct fd *pipe_server_get_fd( struct object *obj ); @@ -42,7 +42,7 @@ index df9f5c4926..5adbb2058b 100644 static int pipe_server_close_handle( struct object *obj, struct process *process, obj_handle_t handle ); static void pipe_server_destroy( struct object *obj); static obj_handle_t pipe_server_flush( struct fd *fd, struct async *async, int blocking ); -@@ -179,8 +181,8 @@ static const struct object_ops pipe_server_ops = +@@ -191,8 +193,8 @@ static const struct object_ops pipe_server_ops = default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ no_lookup_name, /* lookup_name */ @@ -53,7 +53,7 @@ index df9f5c4926..5adbb2058b 100644 no_open_file, /* open_file */ no_alloc_handle, /* alloc_handle */ pipe_server_close_handle, /* close_handle */ -@@ -204,6 +206,8 @@ static const struct fd_ops pipe_server_fd_ops = +@@ -216,6 +218,8 @@ static const struct fd_ops pipe_server_fd_ops = static void pipe_client_dump( struct object *obj, int verbose ); static int pipe_client_signaled( struct object *obj, struct wait_queue_entry *entry ); static struct fd *pipe_client_get_fd( struct object *obj ); @@ -62,7 +62,7 @@ index df9f5c4926..5adbb2058b 100644 static int pipe_client_close_handle( struct object *obj, struct process *process, obj_handle_t handle ); static void pipe_client_destroy( struct object *obj ); static obj_handle_t pipe_client_flush( struct fd *fd, struct async *async, int blocking ); -@@ -224,8 +228,8 @@ static const struct object_ops pipe_client_ops = +@@ -238,8 +242,8 @@ static const struct object_ops pipe_client_ops = default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ no_lookup_name, /* lookup_name */ @@ -73,8 +73,8 @@ index df9f5c4926..5adbb2058b 100644 no_open_file, /* open_file */ no_alloc_handle, /* alloc_handle */ pipe_client_close_handle, /* close_handle */ -@@ -422,6 +426,17 @@ static void do_disconnect( struct pipe_server *server ) - server->pipe_end.fd = NULL; +@@ -486,6 +490,17 @@ static void pipe_end_destroy( struct pipe_end *pipe_end ) + free_async_queue( pipe_end->write_q ); } +static int pipe_server_link_name( struct object *obj, struct object_name *name, struct object *parent ) @@ -91,7 +91,7 @@ index df9f5c4926..5adbb2058b 100644 static int pipe_server_close_handle( struct object *obj, struct process *process, obj_handle_t handle ) { #ifdef __linux__ -@@ -467,6 +482,17 @@ static void pipe_server_destroy( struct object *obj) +@@ -532,6 +547,17 @@ static void pipe_server_destroy( struct object *obj) release_object( server->pipe ); } @@ -109,7 +109,7 @@ index df9f5c4926..5adbb2058b 100644 static int pipe_client_close_handle( struct object *obj, struct process *process, obj_handle_t handle ) { #ifdef __linux__ -@@ -786,9 +812,10 @@ static void init_pipe_end( struct pipe_end *pipe_end, unsigned int pipe_flags, d +@@ -1003,9 +1029,10 @@ static void init_pipe_end( struct pipe_end *pipe_end, unsigned int pipe_flags, d static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned int options, unsigned int pipe_flags ) { @@ -121,7 +121,7 @@ index df9f5c4926..5adbb2058b 100644 if (!server) return NULL; -@@ -810,11 +837,13 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned +@@ -1027,11 +1054,13 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned return server; } @@ -137,7 +137,7 @@ index df9f5c4926..5adbb2058b 100644 if (!client) return NULL; -@@ -913,7 +942,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc +@@ -1130,7 +1159,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc return NULL; } @@ -147,7 +147,7 @@ index df9f5c4926..5adbb2058b 100644 type = ((pipe->flags & NAMED_PIPE_MESSAGE_STREAM_WRITE) && is_messagemode_supported()) ? SOCK_SEQPACKET : SOCK_STREAM; diff --git a/server/object.c b/server/object.c -index 46f020e522..653687d5bf 100644 +index 2ce1cdcd56..37ac0adce6 100644 --- a/server/object.c +++ b/server/object.c @@ -176,7 +176,7 @@ WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len ) @@ -201,7 +201,7 @@ index 46f020e522..653687d5bf 100644 /* dump the name of an object to stderr */ diff --git a/server/object.h b/server/object.h -index 72ad8528c5..ddb4410525 100644 +index 9ff123ebff..4a5d282a47 100644 --- a/server/object.h +++ b/server/object.h @@ -135,6 +135,8 @@ extern WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len ); diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index 88ad0fa3..c77dd59d 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -3005,7 +3005,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c return hr; } -@@ -2255,8 +2273,12 @@ HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const st +@@ -2258,8 +2276,12 @@ HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const st { struct wined3d_resource *resource = &s->container->resource; struct wined3d_device *device = resource->device; @@ -3018,7 +3018,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c const struct blit_shader *blitter; HRESULT hr; -@@ -2267,6 +2289,7 @@ HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const st +@@ -2270,6 +2292,7 @@ HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const st return WINED3DERR_INVALIDCALL; } @@ -3026,7 +3026,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c view_desc.format_id = resource->format->id; view_desc.flags = 0; view_desc.u.texture.level_idx = s->texture_level; -@@ -2282,6 +2305,19 @@ HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const st +@@ -2285,6 +2308,19 @@ HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const st hr = blitter->color_fill(device, view, rect, color); wined3d_rendertarget_view_decref(view); @@ -3046,7 +3046,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c return hr; } -@@ -2608,7 +2644,11 @@ static BOOL surface_load_texture(struct wined3d_surface *surface, +@@ -2611,7 +2647,11 @@ static BOOL surface_load_texture(struct wined3d_surface *surface, /* Don't use PBOs for converted surfaces. During PBO conversion we look at * WINED3D_TEXTURE_CONVERTED but it isn't set (yet) in all cases it is * getting called. */ @@ -3084,7 +3084,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c swapchain_cleanup(swapchain); swapchain->parent_ops->wined3d_object_destroyed(swapchain->parent); HeapFree(GetProcessHeap(), 0, swapchain); -@@ -585,7 +594,11 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +@@ -539,7 +548,11 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, swapchain_blit(swapchain, context, src_rect, dst_rect); } @@ -3096,7 +3096,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c gl_info->gl_ops.gl.p_glFinish(); /* call wglSwapBuffers through the gl table to avoid confusing the Steam overlay */ -@@ -965,6 +978,9 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3 +@@ -919,6 +932,9 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3 } wined3d_cs_init_object(device->cs, wined3d_swapchain_cs_init, swapchain); @@ -3106,7 +3106,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c if (!swapchain->context[0]) { -@@ -1105,6 +1121,10 @@ static struct wined3d_context *swapchain_create_context(struct wined3d_swapchain +@@ -1059,6 +1075,10 @@ static struct wined3d_context *swapchain_create_context(struct wined3d_swapchain TRACE("Creating a new context for swapchain %p, thread %u.\n", swapchain, GetCurrentThreadId()); @@ -3117,7 +3117,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c if (!(ctx = context_create(swapchain, swapchain->front_buffer, swapchain->ds_format))) { ERR("Failed to create a new context for the swapchain\n"); -@@ -1291,6 +1311,9 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha +@@ -1245,6 +1265,9 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha enum wined3d_multisample_type multisample_type, unsigned int multisample_quality) { BOOL update_desc = FALSE; @@ -3127,7 +3127,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c TRACE("swapchain %p, buffer_count %u, width %u, height %u, format %s, " "multisample_type %#x, multisample_quality %#x.\n", -@@ -1302,6 +1325,10 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha +@@ -1256,6 +1279,10 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha if (buffer_count && buffer_count != swapchain->desc.backbuffer_count) FIXME("Cannot change the back buffer count yet.\n"); @@ -3141,7 +3141,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c -@@ -338,7 +338,11 @@ void wined3d_texture_get_memory(struct wined3d_texture *texture, unsigned int su +@@ -333,7 +333,11 @@ void wined3d_texture_get_memory(struct wined3d_texture *texture, unsigned int su if (locations & WINED3D_LOCATION_BUFFER) { data->addr = NULL; @@ -3153,7 +3153,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c return; } if (locations & WINED3D_LOCATION_USER_MEMORY) -@@ -439,6 +443,7 @@ static HRESULT wined3d_texture_init(struct wined3d_texture *texture, const struc +@@ -434,6 +438,7 @@ static HRESULT wined3d_texture_init(struct wined3d_texture *texture, const struc /* Context activation is done by the caller. */ static void wined3d_texture_remove_buffer_object(struct wined3d_texture *texture, @@ -3161,7 +3161,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c unsigned int sub_resource_idx, const struct wined3d_gl_info *gl_info) { GLuint *buffer_object = &texture->sub_resources[sub_resource_idx].buffer_object; -@@ -451,6 +456,19 @@ static void wined3d_texture_remove_buffer_object(struct wined3d_texture *texture +@@ -446,6 +451,19 @@ static void wined3d_texture_remove_buffer_object(struct wined3d_texture *texture wined3d_texture_invalidate_location(texture, sub_resource_idx, WINED3D_LOCATION_BUFFER); *buffer_object = 0; @@ -3181,7 +3181,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c } static void wined3d_texture_update_map_binding(struct wined3d_texture *texture) -@@ -470,7 +488,11 @@ static void wined3d_texture_update_map_binding(struct wined3d_texture *texture) +@@ -465,7 +483,11 @@ static void wined3d_texture_update_map_binding(struct wined3d_texture *texture) && !wined3d_texture_load_location(texture, i, context, map_binding)) ERR("Failed to load location %s.\n", wined3d_debug_location(map_binding)); if (texture->resource.map_binding == WINED3D_LOCATION_BUFFER) @@ -3193,7 +3193,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c } if (context) -@@ -627,28 +649,46 @@ static void wined3d_texture_cleanup(struct wined3d_texture *texture) +@@ -622,28 +644,46 @@ static void wined3d_texture_cleanup(struct wined3d_texture *texture) unsigned int sub_count = texture->level_count * texture->layer_count; struct wined3d_device *device = texture->resource.device; struct wined3d_context *context = NULL; @@ -3240,7 +3240,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c } if (context) context_release(context); -@@ -1392,6 +1432,9 @@ HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT +@@ -1387,6 +1427,9 @@ HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT if (surface->dc) { wined3d_cs_destroy_object(device->cs, texture2d_destroy_dc, surface); @@ -3250,7 +3250,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c create_dib = TRUE; } -@@ -1452,18 +1495,30 @@ HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT +@@ -1447,18 +1490,30 @@ HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT wined3d_texture_invalidate_location(texture, 0, ~valid_location); if (create_dib) @@ -3281,7 +3281,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c if (sub_resource->buffer_object) return; -@@ -1475,6 +1530,16 @@ static void wined3d_texture_prepare_buffer_object(struct wined3d_texture *textur +@@ -1470,6 +1525,16 @@ static void wined3d_texture_prepare_buffer_object(struct wined3d_texture *textur TRACE("Created buffer object %u for texture %p, sub-resource %u.\n", sub_resource->buffer_object, texture, sub_resource_idx); @@ -3298,7 +3298,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c } static void wined3d_texture_force_reload(struct wined3d_texture *texture) -@@ -1600,7 +1665,11 @@ BOOL wined3d_texture_prepare_location(struct wined3d_texture *texture, unsigned +@@ -1595,7 +1660,11 @@ BOOL wined3d_texture_prepare_location(struct wined3d_texture *texture, unsigned return TRUE; case WINED3D_LOCATION_BUFFER: @@ -3310,7 +3310,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c return TRUE; case WINED3D_LOCATION_TEXTURE_RGB: -@@ -1655,7 +1724,9 @@ static struct wined3d_texture_sub_resource *wined3d_texture_get_sub_resource(str +@@ -1650,7 +1719,9 @@ static struct wined3d_texture_sub_resource *wined3d_texture_get_sub_resource(str HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture, UINT layer, const struct wined3d_box *dirty_region) { @@ -3320,7 +3320,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c unsigned int sub_resource_idx; TRACE("texture %p, layer %u, dirty_region %s.\n", texture, layer, debug_box(dirty_region)); -@@ -1667,6 +1738,7 @@ HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture, +@@ -1662,6 +1733,7 @@ HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture, } sub_resource_idx = layer * texture->level_count; @@ -3328,7 +3328,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c if (dirty_region) WARN("Ignoring dirty_region %s.\n", debug_box(dirty_region)); -@@ -1680,6 +1752,9 @@ HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture, +@@ -1675,6 +1747,9 @@ HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture, wined3d_texture_invalidate_location(texture, sub_resource_idx, ~texture->resource.map_binding); context_release(context); @@ -3338,7 +3338,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c return WINED3D_OK; } -@@ -1913,7 +1988,11 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in +@@ -1908,7 +1983,11 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in } else if (sub_resource->locations & WINED3D_LOCATION_BUFFER) { @@ -3350,7 +3350,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c wined3d_texture_bind_and_dirtify(texture, context, location == WINED3D_LOCATION_TEXTURE_SRGB); wined3d_texture_get_pitch(texture, sub_resource_idx, &row_pitch, &slice_pitch); texture1d_upload_data(texture, sub_resource_idx, context, NULL, &data, row_pitch, slice_pitch); -@@ -1958,7 +2037,11 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in +@@ -1953,7 +2032,11 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in case WINED3D_LOCATION_BUFFER: if (sub_resource->locations & (WINED3D_LOCATION_TEXTURE_RGB | WINED3D_LOCATION_TEXTURE_SRGB)) { @@ -3362,7 +3362,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c if (sub_resource->locations & WINED3D_LOCATION_TEXTURE_RGB) wined3d_texture_bind_and_dirtify(texture, context, FALSE); -@@ -2252,8 +2335,13 @@ static void wined3d_texture_unload(struct wined3d_resource *resource) +@@ -2247,8 +2330,13 @@ static void wined3d_texture_unload(struct wined3d_resource *resource) wined3d_texture_invalidate_location(texture, i, ~WINED3D_LOCATION_DISCARDED); } @@ -3376,7 +3376,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c if (resource->type == WINED3D_RTYPE_TEXTURE_2D) { -@@ -2857,6 +2945,9 @@ static HRESULT texture_init(struct wined3d_texture *texture, const struct wined3 +@@ -2852,6 +2940,9 @@ static HRESULT texture_init(struct wined3d_texture *texture, const struct wined3 if ((desc->usage & WINED3DUSAGE_OWNDC) || (device->wined3d->flags & WINED3D_NO3D)) { wined3d_cs_init_object(device->cs, texture2d_create_dc, surface); @@ -3386,7 +3386,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c if (!surface->dc) { wined3d_texture_cleanup_sync(texture); -@@ -3037,7 +3128,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in +@@ -3032,7 +3123,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in } else if (sub_resource->locations & WINED3D_LOCATION_BUFFER) { @@ -3398,7 +3398,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c wined3d_texture_bind_and_dirtify(texture, context, location == WINED3D_LOCATION_TEXTURE_SRGB); wined3d_texture_get_pitch(texture, sub_resource_idx, &row_pitch, &slice_pitch); -@@ -3083,7 +3178,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in +@@ -3078,7 +3173,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in case WINED3D_LOCATION_BUFFER: if (sub_resource->locations & (WINED3D_LOCATION_TEXTURE_RGB | WINED3D_LOCATION_TEXTURE_SRGB)) { @@ -3410,7 +3410,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c if (sub_resource->locations & WINED3D_LOCATION_TEXTURE_RGB) wined3d_texture_bind_and_dirtify(texture, context, FALSE); -@@ -3304,8 +3403,18 @@ HRESULT CDECL wined3d_texture_blt(struct wined3d_texture *dst_texture, unsigned +@@ -3299,8 +3398,18 @@ HRESULT CDECL wined3d_texture_blt(struct wined3d_texture *dst_texture, unsigned if (dst_texture->sub_resources[dst_sub_resource_idx].map_count || (src_texture && src_texture->sub_resources[src_sub_resource_idx].map_count)) { @@ -3429,7 +3429,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c } if ((dst_format_flags & WINED3DFMT_FLAG_BLOCKS) && (flags & WINED3D_BLT_COLOR_FILL)) -@@ -3654,7 +3763,14 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i +@@ -3649,7 +3758,14 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i return WINED3DERR_INVALIDCALL; if (!surface->dc) @@ -3444,7 +3444,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c if (!surface->dc) return WINED3DERR_INVALIDCALL; -@@ -3698,7 +3814,14 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign +@@ -3693,7 +3809,14 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign } if (!(texture->resource.usage & WINED3DUSAGE_OWNDC) && !(device->wined3d->flags & WINED3D_NO3D)) @@ -3541,7 +3541,7 @@ diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -391,6 +391,9 @@ struct wined3d_settings +@@ -390,6 +390,9 @@ struct wined3d_settings unsigned int max_sm_ps; unsigned int max_sm_cs; BOOL no_3d; @@ -3551,7 +3551,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; extern struct wined3d_settings wined3d_settings DECLSPEC_HIDDEN; -@@ -1573,6 +1576,10 @@ struct wined3d_query +@@ -1572,6 +1575,10 @@ struct wined3d_query const void *data; DWORD data_size; const struct wined3d_query_ops *query_ops; @@ -3562,7 +3562,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; union wined3d_gl_query_object -@@ -1614,6 +1621,9 @@ struct wined3d_occlusion_query +@@ -1613,6 +1620,9 @@ struct wined3d_occlusion_query GLuint id; struct wined3d_context *context; UINT64 samples; @@ -3572,7 +3572,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; struct wined3d_timestamp_query -@@ -2603,6 +2613,16 @@ struct wined3d_state +@@ -2602,6 +2612,16 @@ struct wined3d_state struct wined3d_rasterizer_state *rasterizer_state; }; @@ -3589,7 +3589,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h #define WINED3D_UNMAPPED_STAGE ~0u /* Multithreaded flag. Removed from the public header to signal that -@@ -2715,6 +2735,14 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL +@@ -2714,6 +2734,14 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL void device_resource_add(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN; void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN; void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN; @@ -3604,7 +3604,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state) { -@@ -2790,11 +2818,13 @@ static inline void wined3d_resource_release(struct wined3d_resource *resource) +@@ -2789,11 +2817,13 @@ static inline void wined3d_resource_release(struct wined3d_resource *resource) InterlockedDecrement(&resource->access_count); } @@ -3618,7 +3618,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void resource_cleanup(struct wined3d_resource *resource) DECLSPEC_HIDDEN; HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device *device, enum wined3d_resource_type type, const struct wined3d_format *format, -@@ -2905,7 +2935,11 @@ struct wined3d_texture +@@ -2904,7 +2934,11 @@ struct wined3d_texture unsigned int map_count; DWORD locations; @@ -3630,7 +3630,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h } sub_resources[1]; }; -@@ -3208,6 +3242,7 @@ enum wined3d_push_constants +@@ -3207,6 +3241,7 @@ enum wined3d_push_constants WINED3D_PUSH_CONSTANTS_PS_B, }; @@ -3638,7 +3638,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_cs_ops { void *(*require_space)(struct wined3d_cs *cs, size_t size); -@@ -3215,6 +3250,33 @@ struct wined3d_cs_ops +@@ -3214,6 +3249,33 @@ struct wined3d_cs_ops void (*push_constants)(struct wined3d_cs *cs, enum wined3d_push_constants p, unsigned int start_idx, unsigned int count, const void *constants); }; @@ -3672,7 +3672,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_cs { -@@ -3225,8 +3287,31 @@ struct wined3d_cs +@@ -3224,8 +3286,31 @@ struct wined3d_cs size_t data_size, start, end; void *data; @@ -3704,7 +3704,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) DECLSPEC_HIDDEN; void wined3d_cs_destroy(struct wined3d_cs *cs) DECLSPEC_HIDDEN; void wined3d_cs_destroy_object(struct wined3d_cs *cs, -@@ -3237,15 +3322,30 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso +@@ -3236,15 +3321,30 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN; void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects, DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN; @@ -3735,7 +3735,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const struct wined3d_vec4 *plane) DECLSPEC_HIDDEN; -@@ -3293,10 +3393,20 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined +@@ -3292,10 +3392,20 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN; @@ -3756,7 +3756,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void wined3d_cs_init_object(struct wined3d_cs *cs, void (*callback)(void *object), void *object) DECLSPEC_HIDDEN; HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource, unsigned int sub_resource_idx, -@@ -3304,12 +3414,14 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource, +@@ -3303,12 +3413,14 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource, HRESULT wined3d_cs_unmap(struct wined3d_cs *cs, struct wined3d_resource *resource, unsigned int sub_resource_idx) DECLSPEC_HIDDEN;