From a110e490b8534fb28c3464c0eb38fd8c54e9fe9a Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 5 Jun 2015 17:49:14 +0200 Subject: [PATCH] Rebase against b2aa984743cb568f8e6a634a1536bf65950167db. --- README.md | 11 +- ...-stub-for-ConvertInterfaceLuidToGuid.patch | 43 ---- .../definition | 1 - ...t-call-lstrlenW-on-non-null-terminat.patch | 25 -- patches/patchinstall.sh | 243 +++++++----------- patches/server-Inherited_ACLs/definition | 1 - patches/server-JobObjects/definition | 2 +- ...t-ObjectTypeInformation-class-suppor.patch | 205 --------------- ...a-few-more-ObjectTypeInformation-tes.patch | 117 --------- ...server-Fix-type-name-of-IoCompletion.patch | 39 --- .../0004-server-Fix-type-name-of-File.patch | 67 ----- ...rver-Fix-type-name-of-directory-file.patch | 66 ----- .../server-ObjectTypeInformation/definition | 1 - patches/wineconsole-Insert_Mode/definition | 2 +- ...mitive-type-updates-through-the-comm.patch | 36 +-- .../wined3d-CSMT_Main/9999-IfDefined.patch | 110 ++++---- 16 files changed, 169 insertions(+), 800 deletions(-) delete mode 100644 patches/iphlpapi-ConvertInterfaceLuidToGuid/0001-iphlpapi-Add-stub-for-ConvertInterfaceLuidToGuid.patch delete mode 100644 patches/iphlpapi-ConvertInterfaceLuidToGuid/definition delete mode 100644 patches/ntdll-Directory_Test/0001-ntdll-tests-Don-t-call-lstrlenW-on-non-null-terminat.patch delete mode 100644 patches/server-ObjectTypeInformation/0001-ntdll-Implemenent-ObjectTypeInformation-class-suppor.patch delete mode 100644 patches/server-ObjectTypeInformation/0002-ntdll-tests-Add-a-few-more-ObjectTypeInformation-tes.patch delete mode 100644 patches/server-ObjectTypeInformation/0003-server-Fix-type-name-of-IoCompletion.patch delete mode 100644 patches/server-ObjectTypeInformation/0004-server-Fix-type-name-of-File.patch delete mode 100644 patches/server-ObjectTypeInformation/0005-server-Fix-type-name-of-directory-file.patch delete mode 100644 patches/server-ObjectTypeInformation/definition diff --git a/README.md b/README.md index 5564c0e8..f3569677 100644 --- a/README.md +++ b/README.md @@ -39,13 +39,14 @@ Wine. All those differences are also documented on the Included bug fixes and improvements ----------------------------------- -**Bug fixes and features included in the next upcoming release [9]:** +**Bug fixes and features included in the next upcoming release [10]:** * Add implementation for kernel32.GetNumaProcessorNode ([Wine Bug #38660](https://bugs.winehq.org/show_bug.cgi?id=38660)) +* Allow to enable/disable InsertMode in wineconsole settings ([Wine Bug #38697](https://bugs.winehq.org/show_bug.cgi?id=38697)) * Allow to set pixel format for desktop window * Implement mscoree._CorValidateImage for mono runtime ([Wine Bug #38662](https://bugs.winehq.org/show_bug.cgi?id=38662)) * Implement proper handling of CLI .NET images in Wine library loader ([Wine Bug #38661](https://bugs.winehq.org/show_bug.cgi?id=38661)) -* Multiple applications needs better NtQueryInformationJobObject stub ([Wine Bug #38658](https://bugs.winehq.org/show_bug.cgi?id=38658)) +* Multiple applications needs better NtQueryInformationJobObject stub * Set NamedPipeState to FILE_PIPE_CLOSING_STATE on broken pipe in NtQueryInformationFile * Support for AT_ROUND_TO_PAGE flag in NtMapViewOfSection * Support for NtSetInformationFile class FileLinkInformation @@ -79,7 +80,7 @@ for more details.* * Add stub for d3d11.D3D11CreateDeviceAndSwapChain ([Wine Bug #33153](https://bugs.winehq.org/show_bug.cgi?id=33153)) * Add stub for fltlib.FilterLoad ([Wine Bug #38435](https://bugs.winehq.org/show_bug.cgi?id=38435)) * Add stub for gdiplus.GdipCreateEffect ([Wine Bug #32163](https://bugs.winehq.org/show_bug.cgi?id=32163)) -* Add stub for iphlpapi.ConvertInterfaceLuidToGuid ([Wine Bug #38576](https://bugs.winehq.org/show_bug.cgi?id=38576)) +* ~~Add stub for iphlpapi.ConvertInterfaceLuidToGuid~~ ([Wine Bug #38576](https://bugs.winehq.org/show_bug.cgi?id=38576)) * Add stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode) ([Wine Bug #38493](https://bugs.winehq.org/show_bug.cgi?id=38493)) * Add stub for ntoskrnl.ExAcquireResourceExclusiveLite * Add stub for ntoskrnl.ExDeleteResourceLite @@ -101,7 +102,7 @@ for more details.* * Allow special characters in pipe names ([Wine Bug #28995](https://bugs.winehq.org/show_bug.cgi?id=28995)) * Allow to cancel a file operation via progress callback ([Wine Bug #22690](https://bugs.winehq.org/show_bug.cgi?id=22690)) * Allow to edit winecfg library override by double clicking -* Allow to enable/disable InsertMode in wineconsole settings ([Wine Bug #36704](https://bugs.winehq.org/show_bug.cgi?id=36704)) +* ~~Allow to enable/disable InsertMode in wineconsole settings~~ ([Wine Bug #36704](https://bugs.winehq.org/show_bug.cgi?id=36704)) * Allow to open files/directories without any access rights in order to query attributes * Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE. ([Wine Bug #12652](https://bugs.winehq.org/show_bug.cgi?id=12652)) * ~~Also handle '\r' as whitespace in wbemprox queries~~ @@ -265,7 +266,7 @@ for more details.* * Support for NVIDIA video encoder library (nvencodeapi) * Support for NtQuerySection ([Wine Bug #37338](https://bugs.winehq.org/show_bug.cgi?id=37338)) * Support for NtSetInformationFile class FileDispositionInformation ([Wine Bug #30397](https://bugs.winehq.org/show_bug.cgi?id=30397)) -* Support for ObjectTypeInformation class support in NtQueryObject +* ~~Support for ObjectTypeInformation class support in NtQueryObject~~ * Support for PulseAudio backend for audio ([Wine Bug #10495](https://bugs.winehq.org/show_bug.cgi?id=10495)) * Support for RtlDecompressBuffer ([Wine Bug #37449](https://bugs.winehq.org/show_bug.cgi?id=37449)) * Support for SHCreateSessionKey ([Wine Bug #35630](https://bugs.winehq.org/show_bug.cgi?id=35630)) diff --git a/patches/iphlpapi-ConvertInterfaceLuidToGuid/0001-iphlpapi-Add-stub-for-ConvertInterfaceLuidToGuid.patch b/patches/iphlpapi-ConvertInterfaceLuidToGuid/0001-iphlpapi-Add-stub-for-ConvertInterfaceLuidToGuid.patch deleted file mode 100644 index 276f67ac..00000000 --- a/patches/iphlpapi-ConvertInterfaceLuidToGuid/0001-iphlpapi-Add-stub-for-ConvertInterfaceLuidToGuid.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0f3dd71c9bb44c82e1dd38bd2c4eb929bb163685 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Thu, 28 May 2015 22:43:27 +0200 -Subject: iphlpapi: Add stub for ConvertInterfaceLuidToGuid. - ---- - dlls/iphlpapi/iphlpapi.spec | 2 +- - dlls/iphlpapi/iphlpapi_main.c | 9 +++++++++ - 2 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/dlls/iphlpapi/iphlpapi.spec b/dlls/iphlpapi/iphlpapi.spec -index 228f64f..d7a52b7 100644 ---- a/dlls/iphlpapi/iphlpapi.spec -+++ b/dlls/iphlpapi/iphlpapi.spec -@@ -15,7 +15,7 @@ - #@ stub ConvertInterfaceGuidToLuid - #@ stub ConvertInterfaceIndexToLuid - #@ stub ConvertInterfaceLuidToAlias --#@ stub ConvertInterfaceLuidToGuid -+@ stdcall ConvertInterfaceLuidToGuid( ptr ptr ) - #@ stub ConvertInterfaceLuidToIndex - #@ stub ConvertInterfaceLuidToNameA - #@ stub ConvertInterfaceLuidToNameW -diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c -index 3eaefab..d3bb853 100644 ---- a/dlls/iphlpapi/iphlpapi_main.c -+++ b/dlls/iphlpapi/iphlpapi_main.c -@@ -2658,3 +2658,12 @@ ULONG WINAPI GetTcp6Table2(PMIB_TCP6TABLE2 table, PULONG size, BOOL order) - FIXME("pTcp6Table2 %p, size %p, order %d: stub\n", table, size, order); - return ERROR_NOT_SUPPORTED; - } -+ -+/****************************************************************** -+ * ConvertInterfaceLuidToGuid (IPHLPAPI.@) -+ */ -+DWORD WINAPI ConvertInterfaceLuidToGuid(const NET_LUID *luid, GUID *guid) -+{ -+ FIXME("luid %p, guid %p: stub\n", luid, guid); -+ return ERROR_CALL_NOT_IMPLEMENTED; -+} --- -2.4.1 - diff --git a/patches/iphlpapi-ConvertInterfaceLuidToGuid/definition b/patches/iphlpapi-ConvertInterfaceLuidToGuid/definition deleted file mode 100644 index 2ad517a4..00000000 --- a/patches/iphlpapi-ConvertInterfaceLuidToGuid/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [38576] Add stub for iphlpapi.ConvertInterfaceLuidToGuid diff --git a/patches/ntdll-Directory_Test/0001-ntdll-tests-Don-t-call-lstrlenW-on-non-null-terminat.patch b/patches/ntdll-Directory_Test/0001-ntdll-tests-Don-t-call-lstrlenW-on-non-null-terminat.patch deleted file mode 100644 index cbaf223b..00000000 --- a/patches/ntdll-Directory_Test/0001-ntdll-tests-Don-t-call-lstrlenW-on-non-null-terminat.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 725ae5202ae6206606a330d3799fb620a09dc8f9 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Thu, 4 Jun 2015 16:12:58 +0200 -Subject: ntdll/tests: Don't call lstrlenW on non-null-terminated buffer. - ---- - dlls/ntdll/tests/directory.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/dlls/ntdll/tests/directory.c b/dlls/ntdll/tests/directory.c -index 21aa31f..730b0f1 100644 ---- a/dlls/ntdll/tests/directory.c -+++ b/dlls/ntdll/tests/directory.c -@@ -350,7 +350,7 @@ static void test_NtQueryDirectoryFile_case(void) - } - - mask.Buffer = testmask; -- mask.Length = mask.MaximumLength = lstrlenW(testmask) * sizeof(WCHAR); -+ mask.Length = mask.MaximumLength = sizeof(testmask); - pNtQueryDirectoryFile(dirh, NULL, NULL, NULL, &io, data, data_size, - FileBothDirectoryInformation, TRUE, &mask, FALSE); - ok(U(io).Status == STATUS_SUCCESS, "failed to query directory; status %x\n", U(io).Status); --- -2.4.2 - diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index e209fa3a..edc6593d 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -55,7 +55,7 @@ version() echo "Copyright (C) 2014-2015 the Wine Staging project authors." echo "" echo "Patchset to be applied on upstream Wine:" - echo " commit 9ce9ba30ead7560065c3179796eea81066b3b346" + echo " commit b2aa984743cb568f8e6a634a1536bf65950167db" echo "" } @@ -130,7 +130,6 @@ patch_enable_all () enable_gdiplus_GdipCreateRegionRgnData="$1" enable_imagehlp_BindImageEx="$1" enable_imagehlp_ImageLoad="$1" - enable_iphlpapi_ConvertInterfaceLuidToGuid="$1" enable_iphlpapi_TCP_Table="$1" enable_kernel32_CompareStringEx="$1" enable_kernel32_CopyFileEx="$1" @@ -164,7 +163,6 @@ patch_enable_all () enable_ntdll_DOS_Attributes="$1" enable_ntdll_DVD_Read_Size="$1" enable_ntdll_DeviceType_Systemroot="$1" - enable_ntdll_Directory_Test="$1" enable_ntdll_DllRedirects="$1" enable_ntdll_Exception="$1" enable_ntdll_FileDispositionInformation="$1" @@ -210,7 +208,6 @@ patch_enable_all () enable_server_JobObjects="$1" enable_server_Key_State="$1" enable_server_Misc_ACL="$1" - enable_server_ObjectTypeInformation="$1" enable_server_OpenProcess="$1" enable_server_PeekMessage="$1" enable_server_Realtime_Priority="$1" @@ -462,9 +459,6 @@ patch_enable () imagehlp-ImageLoad) enable_imagehlp_ImageLoad="$2" ;; - iphlpapi-ConvertInterfaceLuidToGuid) - enable_iphlpapi_ConvertInterfaceLuidToGuid="$2" - ;; iphlpapi-TCP_Table) enable_iphlpapi_TCP_Table="$2" ;; @@ -564,9 +558,6 @@ patch_enable () ntdll-DeviceType_Systemroot) enable_ntdll_DeviceType_Systemroot="$2" ;; - ntdll-Directory_Test) - enable_ntdll_Directory_Test="$2" - ;; ntdll-DllRedirects) enable_ntdll_DllRedirects="$2" ;; @@ -702,9 +693,6 @@ patch_enable () server-Misc_ACL) enable_server_Misc_ACL="$2" ;; - server-ObjectTypeInformation) - enable_server_ObjectTypeInformation="$2" - ;; server-OpenProcess) enable_server_OpenProcess="$2" ;; @@ -1723,13 +1711,9 @@ if test "$enable_server_ACL_Compat" -eq 1; then fi if test "$enable_server_Inherited_ACLs" -eq 1; then - if test "$enable_server_ObjectTypeInformation" -gt 1; then - abort "Patchset server-ObjectTypeInformation disabled, but server-Inherited_ACLs depends on that." - fi if test "$enable_server_Stored_ACLs" -gt 1; then abort "Patchset server-Stored_ACLs disabled, but server-Inherited_ACLs depends on that." fi - enable_server_ObjectTypeInformation=1 enable_server_Stored_ACLs=1 fi @@ -1840,13 +1824,6 @@ if test "$enable_kernel32_CopyFileEx" -eq 1; then enable_ntdll_FileDispositionInformation=1 fi -if test "$enable_ntdll_FileDispositionInformation" -eq 1; then - if test "$enable_server_File_Permissions" -gt 1; then - abort "Patchset server-File_Permissions disabled, but ntdll-FileDispositionInformation depends on that." - fi - enable_server_File_Permissions=1 -fi - if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then if test "$enable_kernel32_SetFileCompletionNotificationMode" -gt 1; then abort "Patchset kernel32-SetFileCompletionNotificationMode disabled, but kernel32-SetFileInformationByHandle depends on that." @@ -1854,6 +1831,13 @@ if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then enable_kernel32_SetFileCompletionNotificationMode=1 fi +if test "$enable_ntdll_FileDispositionInformation" -eq 1; then + if test "$enable_server_File_Permissions" -gt 1; then + abort "Patchset server-File_Permissions disabled, but ntdll-FileDispositionInformation depends on that." + fi + enable_server_File_Permissions=1 +fi + if test "$enable_dxva2_Video_Decoder" -eq 1; then if test "$enable_winecfg_Staging" -gt 1; then abort "Patchset winecfg-Staging disabled, but dxva2-Video_Decoder depends on that." @@ -2056,23 +2040,6 @@ if test "$enable_Staging" -eq 1; then ) >> "$patchlist" fi -# Patchset server-Misc_ACL -# | -# | This patchset fixes the following Wine bugs: -# | * [#15980] GetSecurityInfo returns NULL DACL for process object -# | -# | Modified files: -# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c -# | -if test "$enable_server_Misc_ACL" -eq 1; then - patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch - patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch - ( - echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },'; - echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },'; - ) >> "$patchlist" -fi - # Patchset server-CreateProcess_ACLs # | # | This patchset fixes the following Wine bugs: @@ -2092,6 +2059,23 @@ if test "$enable_server_CreateProcess_ACLs" -eq 1; then ) >> "$patchlist" fi +# Patchset server-Misc_ACL +# | +# | This patchset fixes the following Wine bugs: +# | * [#15980] GetSecurityInfo returns NULL DACL for process object +# | +# | Modified files: +# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c +# | +if test "$enable_server_Misc_ACL" -eq 1; then + patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch + patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch + ( + echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },'; + echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },'; + ) >> "$patchlist" +fi + # Patchset advapi32-LsaLookupSids # | # | Modified files: @@ -2935,21 +2919,6 @@ if test "$enable_imagehlp_ImageLoad" -eq 1; then ) >> "$patchlist" fi -# Patchset iphlpapi-ConvertInterfaceLuidToGuid -# | -# | This patchset fixes the following Wine bugs: -# | * [#38576] Add stub for iphlpapi.ConvertInterfaceLuidToGuid -# | -# | Modified files: -# | * dlls/iphlpapi/iphlpapi.spec, dlls/iphlpapi/iphlpapi_main.c -# | -if test "$enable_iphlpapi_ConvertInterfaceLuidToGuid" -eq 1; then - patch_apply iphlpapi-ConvertInterfaceLuidToGuid/0001-iphlpapi-Add-stub-for-ConvertInterfaceLuidToGuid.patch - ( - echo '+ { "Sebastian Lackner", "iphlpapi: Add stub for ConvertInterfaceLuidToGuid.", 1 },'; - ) >> "$patchlist" -fi - # Patchset iphlpapi-TCP_Table # | # | This patchset fixes the following Wine bugs: @@ -2977,36 +2946,6 @@ if test "$enable_kernel32_CompareStringEx" -eq 1; then ) >> "$patchlist" fi -# Patchset kernel32-SetFileCompletionNotificationMode -# | -# | This patchset fixes the following Wine bugs: -# | * [#38493] Add stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode) -# | -# | Modified files: -# | * dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec, dlls/kernel32/file.c, -# | dlls/kernel32/kernel32.spec, include/winbase.h -# | -if test "$enable_kernel32_SetFileCompletionNotificationMode" -eq 1; then - patch_apply kernel32-SetFileCompletionNotificationMode/0001-kernel32-Implement-SetFileCompletionNotificationMode.patch - ( - echo '+ { "Olivier F. R. Dierick", "kernel32: Implement SetFileCompletionNotificationModes as a stub.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset kernel32-SetFileInformationByHandle -# | -# | Modified files: -# | * dlls/kernel32/file.c, include/winbase.h -# | -if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then - patch_apply kernel32-SetFileInformationByHandle/0001-include-Declare-a-couple-more-file-information-class.patch - patch_apply kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch - ( - echo '+ { "Michael Müller", "include: Declare a couple more file information class structures.", 1 },'; - echo '+ { "Michael Müller", "kernel32: Implement SetFileInformationByHandle.", 1 },'; - ) >> "$patchlist" -fi - # Patchset server-File_Permissions # | # | Modified files: @@ -3070,6 +3009,36 @@ if test "$enable_ntdll_FileDispositionInformation" -eq 1; then ) >> "$patchlist" fi +# Patchset kernel32-SetFileCompletionNotificationMode +# | +# | This patchset fixes the following Wine bugs: +# | * [#38493] Add stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode) +# | +# | Modified files: +# | * dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec, dlls/kernel32/file.c, +# | dlls/kernel32/kernel32.spec, include/winbase.h +# | +if test "$enable_kernel32_SetFileCompletionNotificationMode" -eq 1; then + patch_apply kernel32-SetFileCompletionNotificationMode/0001-kernel32-Implement-SetFileCompletionNotificationMode.patch + ( + echo '+ { "Olivier F. R. Dierick", "kernel32: Implement SetFileCompletionNotificationModes as a stub.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-SetFileInformationByHandle +# | +# | Modified files: +# | * dlls/kernel32/file.c, include/winbase.h +# | +if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then + patch_apply kernel32-SetFileInformationByHandle/0001-include-Declare-a-couple-more-file-information-class.patch + patch_apply kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch + ( + echo '+ { "Michael Müller", "include: Declare a couple more file information class structures.", 1 },'; + echo '+ { "Michael Müller", "kernel32: Implement SetFileInformationByHandle.", 1 },'; + ) >> "$patchlist" +fi + # Patchset kernel32-CopyFileEx # | # | This patchset fixes the following Wine bugs: @@ -3575,18 +3544,6 @@ if test "$enable_ntdll_DeviceType_Systemroot" -eq 1; then ) >> "$patchlist" fi -# Patchset ntdll-Directory_Test -# | -# | Modified files: -# | * dlls/ntdll/tests/directory.c -# | -if test "$enable_ntdll_Directory_Test" -eq 1; then - patch_apply ntdll-Directory_Test/0001-ntdll-tests-Don-t-call-lstrlenW-on-non-null-terminat.patch - ( - echo '+ { "Sebastian Lackner", "ntdll/tests: Don'\''t call lstrlenW on non-null-terminated buffer.", 1 },'; - ) >> "$patchlist" -fi - # Patchset ntdll-DllRedirects # | # | Modified files: @@ -4271,27 +4228,6 @@ if test "$enable_server_Stored_ACLs" -eq 1; then ) >> "$patchlist" fi -# Patchset server-ObjectTypeInformation -# | -# | Modified files: -# | * dlls/ntdll/om.c, dlls/ntdll/tests/om.c, server/change.c, server/completion.c, server/directory.c, server/file.c, -# | server/handle.c, server/object.h, server/protocol.def -# | -if test "$enable_server_ObjectTypeInformation" -eq 1; then - patch_apply server-ObjectTypeInformation/0001-ntdll-Implemenent-ObjectTypeInformation-class-suppor.patch - patch_apply server-ObjectTypeInformation/0002-ntdll-tests-Add-a-few-more-ObjectTypeInformation-tes.patch - patch_apply server-ObjectTypeInformation/0003-server-Fix-type-name-of-IoCompletion.patch - patch_apply server-ObjectTypeInformation/0004-server-Fix-type-name-of-File.patch - patch_apply server-ObjectTypeInformation/0005-server-Fix-type-name-of-directory-file.patch - ( - echo '+ { "Qian Hong", "ntdll: Implemenent ObjectTypeInformation class support in NtQueryObject.", 2 },'; - echo '+ { "Qian Hong", "ntdll/tests: Add a few more ObjectTypeInformation tests.", 1 },'; - echo '+ { "Qian Hong", "server: Fix type name of IoCompletion.", 1 },'; - echo '+ { "Qian Hong", "server: Fix type name of File.", 1 },'; - echo '+ { "Qian Hong", "server: Fix type name of directory file.", 1 },'; - ) >> "$patchlist" -fi - # Patchset server-Inherited_ACLs # | # | This patchset fixes the following Wine bugs: @@ -4384,9 +4320,6 @@ fi # Patchset server-JobObjects # | -# | This patchset fixes the following Wine bugs: -# | * [#38658] Multiple applications needs better NtQueryInformationJobObject stub -# | # | Modified files: # | * dlls/kernel32/tests/process.c, dlls/ntdll/sync.c, server/process.c # | @@ -5062,7 +4995,7 @@ fi # Patchset wineconsole-Insert_Mode # | # | This patchset fixes the following Wine bugs: -# | * [#36704] Allow to enable/disable InsertMode in wineconsole settings +# | * [#38697] Allow to enable/disable InsertMode in wineconsole settings # | # | Modified files: # | * programs/wineconsole/dialog.c, programs/wineconsole/registry.c, programs/wineconsole/winecon_private.h, @@ -5112,6 +5045,33 @@ if test "$enable_wined3d_CSMT_Helper" -eq 1; then ) >> "$patchlist" fi +# Patchset wined3d-wined3d_swapchain_present +# | +# | Modified files: +# | * dlls/wined3d/swapchain.c +# | +if test "$enable_wined3d_wined3d_swapchain_present" -eq 1; then + patch_apply wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch + ( + echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wined3d-Multisampling +# | +# | This patchset fixes the following Wine bugs: +# | * [#12652] Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE. +# | +# | Modified files: +# | * dlls/wined3d/directx.c, dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h +# | +if test "$enable_wined3d_Multisampling" -eq 1; then + patch_apply wined3d-Multisampling/0001-wined3d-Allow-to-specify-multisampling-AA-quality-le.patch + ( + echo '+ { "Austin English", "wined3d: Allow to specify multisampling AA quality levels via registry.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-Revert_PixelFormat # | # | This patchset fixes the following Wine bugs: @@ -5146,18 +5106,6 @@ if test "$enable_wined3d_Revert_PixelFormat" -eq 1; then ) >> "$patchlist" fi -# Patchset wined3d-resource_check_usage -# | -# | Modified files: -# | * dlls/wined3d/resource.c -# | -if test "$enable_wined3d_resource_check_usage" -eq 1; then - patch_apply wined3d-resource_check_usage/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch - ( - echo '+ { "Erich E. Hoover", "wined3d: Silence repeated resource_check_usage FIXME.", 2 },'; - ) >> "$patchlist" -fi - # Patchset wined3d-UnhandledBlendFactor # | # | Modified files: @@ -5170,30 +5118,15 @@ if test "$enable_wined3d_UnhandledBlendFactor" -eq 1; then ) >> "$patchlist" fi -# Patchset wined3d-wined3d_swapchain_present +# Patchset wined3d-resource_check_usage # | # | Modified files: -# | * dlls/wined3d/swapchain.c +# | * dlls/wined3d/resource.c # | -if test "$enable_wined3d_wined3d_swapchain_present" -eq 1; then - patch_apply wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch +if test "$enable_wined3d_resource_check_usage" -eq 1; then + patch_apply wined3d-resource_check_usage/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch ( - echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset wined3d-Multisampling -# | -# | This patchset fixes the following Wine bugs: -# | * [#12652] Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE. -# | -# | Modified files: -# | * dlls/wined3d/directx.c, dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h -# | -if test "$enable_wined3d_Multisampling" -eq 1; then - patch_apply wined3d-Multisampling/0001-wined3d-Allow-to-specify-multisampling-AA-quality-le.patch - ( - echo '+ { "Austin English", "wined3d: Allow to specify multisampling AA quality levels via registry.", 1 },'; + echo '+ { "Erich E. Hoover", "wined3d: Silence repeated resource_check_usage FIXME.", 2 },'; ) >> "$patchlist" fi diff --git a/patches/server-Inherited_ACLs/definition b/patches/server-Inherited_ACLs/definition index af4f9904..548d7437 100644 --- a/patches/server-Inherited_ACLs/definition +++ b/patches/server-Inherited_ACLs/definition @@ -1,3 +1,2 @@ Depends: server-Stored_ACLs -Depends: server-ObjectTypeInformation Fixes: [34406] Support for inherited file ACLs diff --git a/patches/server-JobObjects/definition b/patches/server-JobObjects/definition index 47aeefcd..a97d955a 100644 --- a/patches/server-JobObjects/definition +++ b/patches/server-JobObjects/definition @@ -1,3 +1,3 @@ -Fixes: [38658] Multiple applications needs better NtQueryInformationJobObject stub +Fixes: Multiple applications needs better NtQueryInformationJobObject stub Depends: server-OpenProcess Depends: server-Misc_ACL diff --git a/patches/server-ObjectTypeInformation/0001-ntdll-Implemenent-ObjectTypeInformation-class-suppor.patch b/patches/server-ObjectTypeInformation/0001-ntdll-Implemenent-ObjectTypeInformation-class-suppor.patch deleted file mode 100644 index b093d2a2..00000000 --- a/patches/server-ObjectTypeInformation/0001-ntdll-Implemenent-ObjectTypeInformation-class-suppor.patch +++ /dev/null @@ -1,205 +0,0 @@ -From f9347e49de382cb0fd257333f23a5cbc4a8b1de5 Mon Sep 17 00:00:00 2001 -From: Qian Hong -Date: Tue, 2 Jun 2015 22:09:48 +0800 -Subject: ntdll: Implemenent ObjectTypeInformation class support in - NtQueryObject. (try 2) - ---- - dlls/ntdll/om.c | 36 ++++++++++++++++++++++++++++++++++++ - dlls/ntdll/tests/om.c | 22 +++++++++++----------- - server/directory.c | 5 ----- - server/handle.c | 18 ++++++++++++++++++ - server/object.h | 5 +++++ - server/protocol.def | 9 +++++++++ - 6 files changed, 79 insertions(+), 16 deletions(-) - -diff --git a/dlls/ntdll/om.c b/dlls/ntdll/om.c -index b337444..5acc3cd 100644 ---- a/dlls/ntdll/om.c -+++ b/dlls/ntdll/om.c -@@ -150,6 +150,42 @@ NTSTATUS WINAPI NtQueryObject(IN HANDLE handle, - SERVER_END_REQ; - } - break; -+ case ObjectTypeInformation: -+ { -+ OBJECT_TYPE_INFORMATION *p = ptr; -+ -+ SERVER_START_REQ( get_object_typename ) -+ { -+ req->handle = wine_server_obj_handle( handle ); -+ if (len > sizeof(*p)) wine_server_set_reply( req, p + 1, len - sizeof(*p) ); -+ status = wine_server_call( req ); -+ if (status == STATUS_SUCCESS) -+ { -+ if (!reply->total) /* no name */ -+ { -+ if (sizeof(*p) > len) status = STATUS_INFO_LENGTH_MISMATCH; -+ else memset( p, 0, sizeof(*p) ); -+ if (used_len) *used_len = sizeof(*p); -+ } -+ else if (sizeof(*p) + reply->total + sizeof(WCHAR) > len) -+ { -+ if (used_len) *used_len = sizeof(*p) + reply->total + sizeof(WCHAR); -+ status = STATUS_INFO_LENGTH_MISMATCH; -+ } -+ else -+ { -+ ULONG res = wine_server_reply_size( reply ); -+ p->TypeName.Buffer = (WCHAR *)(p + 1); -+ p->TypeName.Length = res; -+ p->TypeName.MaximumLength = res + sizeof(WCHAR); -+ p->TypeName.Buffer[res / sizeof(WCHAR)] = 0; -+ if (used_len) *used_len = sizeof(*p) + p->TypeName.MaximumLength; -+ } -+ } -+ } -+ SERVER_END_REQ; -+ } -+ break; - case ObjectDataInformation: - { - OBJECT_DATA_INFORMATION* p = ptr; -diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index a7ac95f..945effa 100644 ---- a/dlls/ntdll/tests/om.c -+++ b/dlls/ntdll/tests/om.c -@@ -690,8 +690,8 @@ static void test_query_object(void) - - len = 0; - status = pNtQueryObject( handle, ObjectTypeInformation, buffer, 0, &len ); -- todo_wine ok( status == STATUS_INFO_LENGTH_MISMATCH, "NtQueryObject failed %x\n", status ); -- todo_wine ok( len >= sizeof(OBJECT_TYPE_INFORMATION) + sizeof(type_event) + sizeof(WCHAR), "unexpected len %u\n", len ); -+ ok( status == STATUS_INFO_LENGTH_MISMATCH, "NtQueryObject failed %x\n", status ); -+ ok( len >= sizeof(OBJECT_TYPE_INFORMATION) + sizeof(type_event) + sizeof(WCHAR), "unexpected len %u\n", len ); - - len = 0; - status = pNtQueryObject( handle, ObjectNameInformation, buffer, sizeof(UNICODE_STRING), &len ); -@@ -700,8 +700,8 @@ static void test_query_object(void) - - len = 0; - status = pNtQueryObject( handle, ObjectTypeInformation, buffer, sizeof(OBJECT_TYPE_INFORMATION), &len ); -- todo_wine ok( status == STATUS_INFO_LENGTH_MISMATCH, "NtQueryObject failed %x\n", status ); -- todo_wine ok( len >= sizeof(OBJECT_TYPE_INFORMATION) + sizeof(type_event) + sizeof(WCHAR), "unexpected len %u\n", len ); -+ ok( status == STATUS_INFO_LENGTH_MISMATCH, "NtQueryObject failed %x\n", status ); -+ ok( len >= sizeof(OBJECT_TYPE_INFORMATION) + sizeof(type_event) + sizeof(WCHAR), "unexpected len %u\n", len ); - - len = 0; - status = pNtQueryObject( handle, ObjectNameInformation, buffer, sizeof(buffer), &len ); -@@ -722,17 +722,17 @@ static void test_query_object(void) - len = 0; - memset( buffer, 0, sizeof(buffer) ); - status = pNtQueryObject( handle, ObjectTypeInformation, buffer, sizeof(buffer), &len ); -- todo_wine ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); -- todo_wine ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); -+ ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); -+ ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); - str = (UNICODE_STRING *)buffer; -- todo_wine ok( len >= sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR), "unexpected len %u\n", len ); -- todo_wine ok( str->Buffer && !memcmp( str->Buffer, type_event, sizeof(type_event) ), -+ ok( len >= sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR), "unexpected len %u\n", len ); -+ ok( str->Buffer && !memcmp( str->Buffer, type_event, sizeof(type_event) ), - "wrong/bad type name %s (%p)\n", wine_dbgstr_w(str->Buffer), str->Buffer ); - - len -= sizeof(WCHAR); - status = pNtQueryObject( handle, ObjectTypeInformation, buffer, len, &len ); -- todo_wine ok( status == STATUS_INFO_LENGTH_MISMATCH, "NtQueryObject failed %x\n", status ); -- todo_wine ok( len >= sizeof(OBJECT_TYPE_INFORMATION) + sizeof(type_event) + sizeof(WCHAR), "unexpected len %u\n", len ); -+ ok( status == STATUS_INFO_LENGTH_MISMATCH, "NtQueryObject failed %x\n", status ); -+ ok( len >= sizeof(OBJECT_TYPE_INFORMATION) + sizeof(type_event) + sizeof(WCHAR), "unexpected len %u\n", len ); - - pNtClose( handle ); - -@@ -777,7 +777,7 @@ static void test_query_object(void) - len = 0; - memset( buffer, 0, sizeof(buffer) ); - status = pNtQueryObject( handle, ObjectTypeInformation, buffer, sizeof(buffer), &len ); -- todo_wine ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); -+ ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); - todo_wine ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); - str = (UNICODE_STRING *)buffer; - expected_len = sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR); -diff --git a/server/directory.c b/server/directory.c -index 471b844..4fd7c6c 100644 ---- a/server/directory.c -+++ b/server/directory.c -@@ -41,11 +41,6 @@ - - #define HASH_SIZE 7 /* default hash size */ - --struct object_type --{ -- struct object obj; /* object header */ --}; -- - static void object_type_dump( struct object *obj, int verbose ); - static struct object_type *object_type_get_type( struct object *obj ); - -diff --git a/server/handle.c b/server/handle.c -index 5043ff7..3fc608d 100644 ---- a/server/handle.c -+++ b/server/handle.c -@@ -650,6 +650,24 @@ DECL_HANDLER(get_object_info) - release_object( obj ); - } - -+DECL_HANDLER(get_object_typename) -+{ -+ struct object *obj; -+ struct object_type *type; -+ const WCHAR *name; -+ -+ if (!(obj = get_handle_obj( current->process, req->handle, 0, NULL ))) return; -+ -+ reply->total = 0; -+ if ((type = obj->ops->get_type( obj ))) -+ { -+ if ((name = get_object_name( &type->obj, &reply->total ))) -+ set_reply_data( name, min( reply->total, get_reply_max_size() ) ); -+ release_object( type ); -+ } -+ release_object( obj ); -+} -+ - DECL_HANDLER(set_security_object) - { - data_size_t sd_size = get_req_data_size(); -diff --git a/server/object.h b/server/object.h -index b59811f..bf956e1 100644 ---- a/server/object.h -+++ b/server/object.h -@@ -105,6 +105,11 @@ struct object - #endif - }; - -+struct object_type -+{ -+ struct object obj; /* object header */ -+}; -+ - struct wait_queue_entry - { - struct list entry; -diff --git a/server/protocol.def b/server/protocol.def -index 9c4dab4..7d2a345 100644 ---- a/server/protocol.def -+++ b/server/protocol.def -@@ -3325,6 +3325,15 @@ enum coords_relative - @END - - -+/* Query object type name information */ -+@REQ(get_object_typename) -+ obj_handle_t handle; /* handle to the object */ -+@REPLY -+ data_size_t total; /* needed size for type name */ -+ VARARG(typename,unicode_str); /* type name */ -+@END -+ -+ - /* Unlink a named object */ - @REQ(unlink_object) - obj_handle_t handle; /* handle to the object */ --- -2.4.2 - diff --git a/patches/server-ObjectTypeInformation/0002-ntdll-tests-Add-a-few-more-ObjectTypeInformation-tes.patch b/patches/server-ObjectTypeInformation/0002-ntdll-tests-Add-a-few-more-ObjectTypeInformation-tes.patch deleted file mode 100644 index d6325490..00000000 --- a/patches/server-ObjectTypeInformation/0002-ntdll-tests-Add-a-few-more-ObjectTypeInformation-tes.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 43ed4ed6ee16114f8b313cf1f7d717c51bb08df6 Mon Sep 17 00:00:00 2001 -From: Qian Hong -Date: Tue, 2 Jun 2015 22:10:06 +0800 -Subject: ntdll/tests: Add a few more ObjectTypeInformation tests. - ---- - dlls/ntdll/tests/om.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 67 insertions(+), 1 deletion(-) - -diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index 945effa..8470238 100644 ---- a/dlls/ntdll/tests/om.c -+++ b/dlls/ntdll/tests/om.c -@@ -54,6 +54,7 @@ static NTSTATUS (WINAPI *pNtCreateKeyedEvent)( HANDLE *, ACCESS_MASK, const OBJE - static NTSTATUS (WINAPI *pNtOpenKeyedEvent)( HANDLE *, ACCESS_MASK, const OBJECT_ATTRIBUTES * ); - static NTSTATUS (WINAPI *pNtWaitForKeyedEvent)( HANDLE, const void *, BOOLEAN, const LARGE_INTEGER * ); - static NTSTATUS (WINAPI *pNtReleaseKeyedEvent)( HANDLE, const void *, BOOLEAN, const LARGE_INTEGER * ); -+static NTSTATUS (WINAPI *pNtCreateIoCompletion)(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, ULONG); - - #define KEYEDEVENT_WAIT 0x0001 - #define KEYEDEVENT_WAKE 0x0002 -@@ -674,12 +675,16 @@ static void test_query_object(void) - '\\','t','e','s','t','_','e','v','e','n','t'}; - static const WCHAR type_event[] = {'E','v','e','n','t'}; - static const WCHAR type_file[] = {'F','i','l','e'}; -+ static const WCHAR type_iocompletion[] = {'I','o','C','o','m','p','l','e','t','i','o','n'}; -+ static const WCHAR type_directory[] = {'D','i','r','e','c','t','o','r','y'}; -+ static const WCHAR type_section[] = {'S','e','c','t','i','o','n'}; - HANDLE handle; - char buffer[1024]; - NTSTATUS status; - ULONG len, expected_len; - UNICODE_STRING *str; -- char dir[MAX_PATH]; -+ char dir[MAX_PATH], tmp_path[MAX_PATH], file1[MAX_PATH + 16]; -+ LARGE_INTEGER size; - - handle = CreateEventA( NULL, FALSE, FALSE, "test_event" ); - -@@ -786,6 +791,66 @@ static void test_query_object(void) - "wrong/bad type name %s (%p)\n", wine_dbgstr_w(str->Buffer), str->Buffer ); - - pNtClose( handle ); -+ -+ GetTempPathA(MAX_PATH, tmp_path); -+ GetTempFileNameA(tmp_path, "foo", 0, file1); -+ handle = CreateFileA(file1, GENERIC_WRITE | DELETE, 0, NULL, CREATE_ALWAYS, 0, 0); -+ len = 0; -+ memset( buffer, 0, sizeof(buffer) ); -+ status = pNtQueryObject( handle, ObjectTypeInformation, buffer, sizeof(buffer), &len ); -+ ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); -+ todo_wine ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); -+ str = (UNICODE_STRING *)buffer; -+ expected_len = sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR); -+ todo_wine ok( len >= expected_len, "unexpected len %u\n", len ); -+ todo_wine ok( str->Buffer && !memcmp( str->Buffer, type_file, sizeof(type_file) ), -+ "wrong/bad type name %s (%p)\n", wine_dbgstr_w(str->Buffer), str->Buffer ); -+ DeleteFileA( file1 ); -+ pNtClose( handle ); -+ -+ status = pNtCreateIoCompletion( &handle, IO_COMPLETION_ALL_ACCESS, NULL, 0 ); -+ ok( status == STATUS_SUCCESS, "NtCreateIoCompletion failed %x\n", status); -+ len = 0; -+ memset( buffer, 0, sizeof(buffer) ); -+ status = pNtQueryObject( handle, ObjectTypeInformation, buffer, sizeof(buffer), &len ); -+ ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); -+ ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); -+ str = (UNICODE_STRING *)buffer; -+ expected_len = sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR); -+ ok( len >= expected_len, "unexpected len %u\n", len ); -+ todo_wine ok( str->Buffer && !memcmp( str->Buffer, type_iocompletion, sizeof(type_iocompletion) ), -+ "wrong/bad type name %s (%p)\n", wine_dbgstr_w(str->Buffer), str->Buffer ); -+ pNtClose( handle ); -+ -+ status = pNtCreateDirectoryObject( &handle, DIRECTORY_QUERY, NULL ); -+ ok(status == STATUS_SUCCESS, "Failed to create Directory %08x\n", status); -+ len = 0; -+ memset( buffer, 0, sizeof(buffer) ); -+ status = pNtQueryObject( handle, ObjectTypeInformation, buffer, sizeof(buffer), &len ); -+ ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); -+ ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); -+ str = (UNICODE_STRING *)buffer; -+ expected_len = sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR); -+ ok( len >= expected_len, "unexpected len %u\n", len ); -+ ok( str->Buffer && !memcmp( str->Buffer, type_directory, sizeof(type_directory) ), -+ "wrong/bad type name %s (%p)\n", wine_dbgstr_w(str->Buffer), str->Buffer ); -+ pNtClose( handle ); -+ -+ size.u.LowPart = 256; -+ size.u.HighPart = 0; -+ status = pNtCreateSection( &handle, SECTION_MAP_WRITE, NULL, &size, PAGE_READWRITE, SEC_COMMIT, 0 ); -+ ok( status == STATUS_SUCCESS , "NtCreateSection returned %x\n", status ); -+ len = 0; -+ memset( buffer, 0, sizeof(buffer) ); -+ status = pNtQueryObject( handle, ObjectTypeInformation, buffer, sizeof(buffer), &len ); -+ ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); -+ ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); -+ str = (UNICODE_STRING *)buffer; -+ expected_len = sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR); -+ ok( len >= expected_len, "unexpected len %u\n", len ); -+ ok( str->Buffer && !memcmp( str->Buffer, type_section, sizeof(type_section) ), -+ "wrong/bad type name %s (%p)\n", wine_dbgstr_w(str->Buffer), str->Buffer ); -+ pNtClose( handle ); - } - - static void test_type_mismatch(void) -@@ -1164,6 +1229,7 @@ START_TEST(om) - pNtOpenKeyedEvent = (void *)GetProcAddress(hntdll, "NtOpenKeyedEvent"); - pNtWaitForKeyedEvent = (void *)GetProcAddress(hntdll, "NtWaitForKeyedEvent"); - pNtReleaseKeyedEvent = (void *)GetProcAddress(hntdll, "NtReleaseKeyedEvent"); -+ pNtCreateIoCompletion = (void *)GetProcAddress(hntdll, "NtCreateIoCompletion"); - - test_case_sensitive(); - test_namespace_pipe(); --- -2.4.2 - diff --git a/patches/server-ObjectTypeInformation/0003-server-Fix-type-name-of-IoCompletion.patch b/patches/server-ObjectTypeInformation/0003-server-Fix-type-name-of-IoCompletion.patch deleted file mode 100644 index 561c23c6..00000000 --- a/patches/server-ObjectTypeInformation/0003-server-Fix-type-name-of-IoCompletion.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 91dff1ddeeec333d99dced491b362ada546a73f7 Mon Sep 17 00:00:00 2001 -From: Qian Hong -Date: Tue, 2 Jun 2015 22:10:14 +0800 -Subject: server: Fix type name of IoCompletion. - ---- - dlls/ntdll/tests/om.c | 2 +- - server/completion.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index 8470238..b7ef99e 100644 ---- a/dlls/ntdll/tests/om.c -+++ b/dlls/ntdll/tests/om.c -@@ -818,7 +818,7 @@ static void test_query_object(void) - str = (UNICODE_STRING *)buffer; - expected_len = sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR); - ok( len >= expected_len, "unexpected len %u\n", len ); -- todo_wine ok( str->Buffer && !memcmp( str->Buffer, type_iocompletion, sizeof(type_iocompletion) ), -+ ok( str->Buffer && !memcmp( str->Buffer, type_iocompletion, sizeof(type_iocompletion) ), - "wrong/bad type name %s (%p)\n", wine_dbgstr_w(str->Buffer), str->Buffer ); - pNtClose( handle ); - -diff --git a/server/completion.c b/server/completion.c -index 0c26c37..77c72cc 100644 ---- a/server/completion.c -+++ b/server/completion.c -@@ -109,7 +109,7 @@ static void completion_dump( struct object *obj, int verbose ) - - static struct object_type *completion_get_type( struct object *obj ) - { -- static const WCHAR name[] = {'C','o','m','p','l','e','t','i','o','n'}; -+ static const WCHAR name[] = {'I','o','C','o','m','p','l','e','t','i','o','n'}; - static const struct unicode_str str = { name, sizeof(name) }; - return get_object_type( &str ); - } --- -2.4.2 - diff --git a/patches/server-ObjectTypeInformation/0004-server-Fix-type-name-of-File.patch b/patches/server-ObjectTypeInformation/0004-server-Fix-type-name-of-File.patch deleted file mode 100644 index e46a43e7..00000000 --- a/patches/server-ObjectTypeInformation/0004-server-Fix-type-name-of-File.patch +++ /dev/null @@ -1,67 +0,0 @@ -From b5241b8f1a33a215b4695bcf7b5abc7e9967c347 Mon Sep 17 00:00:00 2001 -From: Qian Hong -Date: Tue, 2 Jun 2015 22:10:25 +0800 -Subject: server: Fix type name of File. - ---- - dlls/ntdll/tests/om.c | 6 +++--- - server/file.c | 10 +++++++++- - 2 files changed, 12 insertions(+), 4 deletions(-) - -diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index b7ef99e..1fa9c47 100644 ---- a/dlls/ntdll/tests/om.c -+++ b/dlls/ntdll/tests/om.c -@@ -799,11 +799,11 @@ static void test_query_object(void) - memset( buffer, 0, sizeof(buffer) ); - status = pNtQueryObject( handle, ObjectTypeInformation, buffer, sizeof(buffer), &len ); - ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); -- todo_wine ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); -+ ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); - str = (UNICODE_STRING *)buffer; - expected_len = sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR); -- todo_wine ok( len >= expected_len, "unexpected len %u\n", len ); -- todo_wine ok( str->Buffer && !memcmp( str->Buffer, type_file, sizeof(type_file) ), -+ ok( len >= expected_len, "unexpected len %u\n", len ); -+ ok( str->Buffer && !memcmp( str->Buffer, type_file, sizeof(type_file) ), - "wrong/bad type name %s (%p)\n", wine_dbgstr_w(str->Buffer), str->Buffer ); - DeleteFileA( file1 ); - pNtClose( handle ); -diff --git a/server/file.c b/server/file.c -index 792bbe0..e70304f 100644 ---- a/server/file.c -+++ b/server/file.c -@@ -64,6 +64,7 @@ struct file - static unsigned int generic_file_map_access( unsigned int access ); - - static void file_dump( struct object *obj, int verbose ); -+static struct object_type *file_get_type( struct object *obj ); - static struct fd *file_get_fd( struct object *obj ); - static struct security_descriptor *file_get_sd( struct object *obj ); - static int file_set_sd( struct object *obj, const struct security_descriptor *sd, unsigned int set_info ); -@@ -77,7 +78,7 @@ static const struct object_ops file_ops = - { - sizeof(struct file), /* size */ - file_dump, /* dump */ -- no_get_type, /* get_type */ -+ file_get_type, /* get_type */ - add_queue, /* add_queue */ - remove_queue, /* remove_queue */ - default_fd_signaled, /* signaled */ -@@ -273,6 +274,13 @@ static void file_dump( struct object *obj, int verbose ) - fprintf( stderr, "File fd=%p\n", file->fd ); - } - -+static struct object_type *file_get_type( struct object *obj ) -+{ -+ static const WCHAR name[] = {'F','i','l','e'}; -+ static const struct unicode_str str = { name, sizeof(name) }; -+ return get_object_type( &str ); -+} -+ - static int file_get_poll_events( struct fd *fd ) - { - struct file *file = get_fd_user( fd ); --- -2.4.2 - diff --git a/patches/server-ObjectTypeInformation/0005-server-Fix-type-name-of-directory-file.patch b/patches/server-ObjectTypeInformation/0005-server-Fix-type-name-of-directory-file.patch deleted file mode 100644 index 5e9d1d43..00000000 --- a/patches/server-ObjectTypeInformation/0005-server-Fix-type-name-of-directory-file.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 66b8b246b653b67230e6cd030b0733da1fb2de5b Mon Sep 17 00:00:00 2001 -From: Qian Hong -Date: Tue, 2 Jun 2015 22:10:37 +0800 -Subject: server: Fix type name of directory file. - ---- - dlls/ntdll/tests/om.c | 6 +++--- - server/change.c | 10 +++++++++- - 2 files changed, 12 insertions(+), 4 deletions(-) - -diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index 1fa9c47..0f9008a 100644 ---- a/dlls/ntdll/tests/om.c -+++ b/dlls/ntdll/tests/om.c -@@ -783,11 +783,11 @@ static void test_query_object(void) - memset( buffer, 0, sizeof(buffer) ); - status = pNtQueryObject( handle, ObjectTypeInformation, buffer, sizeof(buffer), &len ); - ok( status == STATUS_SUCCESS, "NtQueryObject failed %x\n", status ); -- todo_wine ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); -+ ok( len > sizeof(OBJECT_TYPE_INFORMATION), "unexpected len %u\n", len ); - str = (UNICODE_STRING *)buffer; - expected_len = sizeof(OBJECT_TYPE_INFORMATION) + str->Length + sizeof(WCHAR); -- todo_wine ok( len >= expected_len, "unexpected len %u\n", len ); -- todo_wine ok( str->Buffer && !memcmp( str->Buffer, type_file, sizeof(type_file) ), -+ ok( len >= expected_len, "unexpected len %u\n", len ); -+ ok( str->Buffer && !memcmp( str->Buffer, type_file, sizeof(type_file) ), - "wrong/bad type name %s (%p)\n", wine_dbgstr_w(str->Buffer), str->Buffer ); - - pNtClose( handle ); -diff --git a/server/change.c b/server/change.c -index 11d9b93..59d1819 100644 ---- a/server/change.c -+++ b/server/change.c -@@ -148,13 +148,14 @@ static struct security_descriptor *dir_get_sd( struct object *obj ); - static int dir_set_sd( struct object *obj, const struct security_descriptor *sd, - unsigned int set_info ); - static void dir_dump( struct object *obj, int verbose ); -+static struct object_type *dir_get_type( struct object *obj ); - static void dir_destroy( struct object *obj ); - - static const struct object_ops dir_ops = - { - sizeof(struct dir), /* size */ - dir_dump, /* dump */ -- no_get_type, /* get_type */ -+ dir_get_type, /* get_type */ - add_queue, /* add_queue */ - remove_queue, /* remove_queue */ - default_fd_signaled, /* signaled */ -@@ -250,6 +251,13 @@ static void dir_dump( struct object *obj, int verbose ) - fprintf( stderr, "Dirfile fd=%p filter=%08x\n", dir->fd, dir->filter ); - } - -+static struct object_type *dir_get_type( struct object *obj ) -+{ -+ static const WCHAR name[] = {'F','i','l','e'}; -+ static const struct unicode_str str = { name, sizeof(name) }; -+ return get_object_type( &str ); -+} -+ - /* enter here directly from SIGIO signal handler */ - void do_change_notify( int unix_fd ) - { --- -2.4.2 - diff --git a/patches/server-ObjectTypeInformation/definition b/patches/server-ObjectTypeInformation/definition deleted file mode 100644 index 7f879c05..00000000 --- a/patches/server-ObjectTypeInformation/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: Support for ObjectTypeInformation class support in NtQueryObject diff --git a/patches/wineconsole-Insert_Mode/definition b/patches/wineconsole-Insert_Mode/definition index 7c02f5c9..4670839a 100644 --- a/patches/wineconsole-Insert_Mode/definition +++ b/patches/wineconsole-Insert_Mode/definition @@ -1 +1 @@ -Fixes: [36704] Allow to enable/disable InsertMode in wineconsole settings +Fixes: [38697] Allow to enable/disable InsertMode in wineconsole settings diff --git a/patches/wined3d-CSMT_Main/0065-wined3d-Send-primitive-type-updates-through-the-comm.patch b/patches/wined3d-CSMT_Main/0065-wined3d-Send-primitive-type-updates-through-the-comm.patch index 682c34e1..23d8f2a0 100644 --- a/patches/wined3d-CSMT_Main/0065-wined3d-Send-primitive-type-updates-through-the-comm.patch +++ b/patches/wined3d-CSMT_Main/0065-wined3d-Send-primitive-type-updates-through-the-comm.patch @@ -1,4 +1,4 @@ -From a322b70c446dcd49facd2c6987a70b289c4678d1 Mon Sep 17 00:00:00 2001 +From 3f7a369ba516a2ebe970a5160293d190f806f65e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Sun, 7 Apr 2013 17:53:43 +0200 Subject: wined3d: Send primitive type updates through the command stream @@ -11,10 +11,10 @@ Subject: wined3d: Send primitive type updates through the command stream 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index 0525a59..a7ba2b4 100644 +index f385449..8a28c40 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c -@@ -67,6 +67,7 @@ enum wined3d_cs_op +@@ -68,6 +68,7 @@ enum wined3d_cs_op WINED3D_CS_OP_SET_PS_CONSTS_F, WINED3D_CS_OP_GLFINISH, WINED3D_CS_OP_SET_BASE_VERTEX_INDEX, @@ -22,7 +22,7 @@ index 0525a59..a7ba2b4 100644 WINED3D_CS_OP_STOP, }; -@@ -297,6 +298,12 @@ struct wined3d_cs_set_base_vertex_index +@@ -307,6 +308,12 @@ struct wined3d_cs_set_base_vertex_index UINT base_vertex_index; }; @@ -35,7 +35,7 @@ index 0525a59..a7ba2b4 100644 /* FIXME: The list synchronization probably isn't particularly fast. */ static void wined3d_cs_list_enqueue(struct wined3d_cs_list *list, struct wined3d_cs_block *block) { -@@ -952,9 +959,6 @@ static UINT wined3d_cs_exec_transfer_stateblock(struct wined3d_cs *cs, const voi +@@ -977,9 +984,6 @@ static UINT wined3d_cs_exec_transfer_stateblock(struct wined3d_cs *cs, const voi /* Don't memcpy the entire struct, we'll remove single items as we add dedicated * ops for setting states */ @@ -45,7 +45,7 @@ index 0525a59..a7ba2b4 100644 memcpy(cs->state.vs_consts_b, op->state.vs_consts_b, sizeof(cs->state.vs_consts_b)); memcpy(cs->state.vs_consts_i, op->state.vs_consts_i, sizeof(cs->state.vs_consts_i)); -@@ -975,8 +979,6 @@ void wined3d_cs_emit_transfer_stateblock(struct wined3d_cs *cs, const struct win +@@ -1000,8 +1004,6 @@ void wined3d_cs_emit_transfer_stateblock(struct wined3d_cs *cs, const struct win /* Don't memcpy the entire struct, we'll remove single items as we add dedicated * ops for setting states */ @@ -54,7 +54,7 @@ index 0525a59..a7ba2b4 100644 memcpy(op->state.vs_consts_b, state->vs_consts_b, sizeof(op->state.vs_consts_b)); memcpy(op->state.vs_consts_i, state->vs_consts_i, sizeof(op->state.vs_consts_i)); -@@ -1321,6 +1323,32 @@ void wined3d_cs_emit_set_base_vertex_index(struct wined3d_cs *cs, +@@ -1434,6 +1436,32 @@ void wined3d_cs_emit_set_base_vertex_index(struct wined3d_cs *cs, cs->ops->submit(cs); } @@ -66,7 +66,7 @@ index 0525a59..a7ba2b4 100644 + prev = cs->state.gl_primitive_type; + + if (op->gl_primitive_type == GL_POINTS || prev == GL_POINTS) -+ device_invalidate_state(cs->device, STATE_POINT_SIZE_ENABLE); ++ device_invalidate_state(cs->device, STATE_POINT_ENABLE); + + cs->state.gl_primitive_type = op->gl_primitive_type; + @@ -87,7 +87,7 @@ index 0525a59..a7ba2b4 100644 static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) = { /* WINED3D_CS_OP_FENCE */ wined3d_cs_exec_fence, -@@ -1354,6 +1382,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void +@@ -1468,6 +1496,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void /* WINED3D_CS_OP_SET_PS_CONSTS_F */ wined3d_cs_exec_set_ps_consts_f, /* WINED3D_CS_OP_GLFINISH */ wined3d_cs_exec_glfinish, /* WINED3D_CS_OP_SET_BASE_VERTEX_INDEX */ wined3d_cs_exec_set_base_vertex_index, @@ -96,10 +96,10 @@ index 0525a59..a7ba2b4 100644 static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index a80784b..e87a52c 100644 +index 939d525..49ec1dc 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c -@@ -3348,7 +3348,6 @@ void CDECL wined3d_device_set_primitive_type(struct wined3d_device *device, +@@ -3377,7 +3377,6 @@ void CDECL wined3d_device_set_primitive_type(struct wined3d_device *device, enum wined3d_primitive_type primitive_type) { GLenum gl_primitive_type, prev; @@ -107,19 +107,19 @@ index a80784b..e87a52c 100644 TRACE("device %p, primitive_type %s\n", device, debug_d3dprimitivetype(primitive_type)); gl_primitive_type = gl_primitive_type_from_d3d(primitive_type); -@@ -3356,8 +3355,8 @@ void CDECL wined3d_device_set_primitive_type(struct wined3d_device *device, +@@ -3385,8 +3384,8 @@ void CDECL wined3d_device_set_primitive_type(struct wined3d_device *device, device->update_state->gl_primitive_type = gl_primitive_type; if (device->recording) device->recording->changed.primitive_type = TRUE; - else if (gl_primitive_type != prev && (gl_primitive_type == GL_POINTS || prev == GL_POINTS)) -- device_invalidate_state(device, STATE_POINT_SIZE_ENABLE); +- device_invalidate_state(device, STATE_POINT_ENABLE); + else if (gl_primitive_type != prev) + wined3d_cs_emit_set_primitive_type(device->cs, gl_primitive_type); } void CDECL wined3d_device_get_primitive_type(const struct wined3d_device *device, diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c -index 141e539..606134c 100644 +index 790d769..cd07055 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -1075,8 +1075,8 @@ void CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblock) @@ -127,17 +127,17 @@ index 141e539..606134c 100644 prev = device->update_state->gl_primitive_type; device->update_state->gl_primitive_type = gl_primitive_type; - if (gl_primitive_type != prev && (gl_primitive_type == GL_POINTS || prev == GL_POINTS)) -- device_invalidate_state(device, STATE_POINT_SIZE_ENABLE); +- device_invalidate_state(device, STATE_POINT_ENABLE); + if (gl_primitive_type != prev) + wined3d_cs_emit_set_primitive_type(device->cs, gl_primitive_type); } if (stateblock->changed.indices) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 382c120..a647ca9 100644 +index 3d65d93..bae0336 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2618,6 +2618,8 @@ void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, co +@@ -2675,6 +2675,8 @@ void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, co void wined3d_cs_emit_glfinish(struct wined3d_cs *cs) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_base_vertex_index(struct wined3d_cs *cs, UINT base_vertex_index) DECLSPEC_HIDDEN; @@ -147,5 +147,5 @@ index 382c120..a647ca9 100644 /* Direct3D terminology with little modifications. We do not have an issued state * because only the driver knows about it, but we have a created state because d3d -- -2.1.3 +2.4.2 diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index ec946219..5f79043e 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -378,7 +378,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c const struct wined3d_gl_info *gl_info = context->gl_info; gl_info->gl_ops.gl.p_glStencilMask(mask); -@@ -1164,10 +1185,17 @@ +@@ -1125,10 +1146,17 @@ /* drop through */ case WINED3D_FOG_NONE: @@ -396,7 +396,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c new_source = FOGSOURCE_COORD; gl_info->gl_ops.gl.p_glFogi(GL_FOG_MODE, GL_LINEAR); checkGLcall("glFogi(GL_FOG_MODE, GL_LINEAR)"); -@@ -1683,7 +1711,11 @@ +@@ -1644,7 +1672,11 @@ if (state->render_states[WINED3D_RS_SLOPESCALEDEPTHBIAS] || state->render_states[WINED3D_RS_DEPTHBIAS]) { @@ -408,7 +408,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c float scale; union -@@ -4227,9 +4259,15 @@ +@@ -4188,9 +4220,15 @@ } } } else { @@ -424,7 +424,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c WARN("unsupported blending in openGl\n"); } } -@@ -4581,7 +4619,11 @@ +@@ -4542,7 +4580,11 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { @@ -436,7 +436,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c const struct wined3d_gl_info *gl_info = context->gl_info; struct wined3d_viewport vp = state->viewport; -@@ -4759,7 +4801,11 @@ +@@ -4720,7 +4762,11 @@ } else { @@ -448,7 +448,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c UINT height; UINT width; -@@ -4823,7 +4869,11 @@ +@@ -4784,7 +4830,11 @@ void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { @@ -1140,7 +1140,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c default: mat._14 = mat._24 = mat._34 = 0.0f; mat._44 = 1.0f; } -@@ -3972,7 +3991,11 @@ +@@ -4017,7 +4036,11 @@ unsigned int i; DWORD ttff; DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2; @@ -1610,7 +1610,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c wined3d_cs_emit_set_primitive_type(device->cs, gl_primitive_type); +#else /* STAGING_CSMT */ + if (gl_primitive_type != prev && (gl_primitive_type == GL_POINTS || prev == GL_POINTS)) -+ device_invalidate_state(device, STATE_POINT_SIZE_ENABLE); ++ device_invalidate_state(device, STATE_POINT_ENABLE); +#endif /* STAGING_CSMT */ } @@ -1685,7 +1685,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c -@@ -16880,7 +16880,11 @@ +@@ -17171,7 +17171,11 @@ fill_surface(surface_managed, 0x0000ff00, D3DLOCK_NO_DIRTY_UPDATE); add_dirty_rect_test_draw(device); color = getPixelColor(device, 320, 240); @@ -1758,7 +1758,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; extern struct wined3d_settings wined3d_settings DECLSPEC_HIDDEN; -@@ -1008,9 +1038,14 @@ +@@ -1010,9 +1040,14 @@ WORD use_map; /* MAX_ATTRIBS, 16 */ }; @@ -1773,7 +1773,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) DECLSPEC_HIDDEN; #define eps 1e-8f -@@ -1098,8 +1133,10 @@ +@@ -1100,8 +1135,10 @@ struct list entry; GLuint id; struct wined3d_context *context; @@ -1784,7 +1784,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; union wined3d_gl_query_object -@@ -1135,6 +1172,7 @@ +@@ -1137,6 +1174,7 @@ struct list entry; GLuint id; struct wined3d_context *context; @@ -1792,7 +1792,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h UINT64 timestamp; }; -@@ -1170,6 +1208,12 @@ +@@ -1172,6 +1210,12 @@ for (i = 0; i < min(dst->rt_size, src->rt_size); i++) dst->render_targets[i] = src->render_targets[i]; } @@ -1805,7 +1805,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_context { -@@ -1185,7 +1229,9 @@ +@@ -1187,7 +1231,9 @@ DWORD dirtyArray[STATE_HIGHEST + 1]; /* Won't get bigger than that, a state is never marked dirty 2 times */ DWORD numDirtyEntries; DWORD isStateDirty[STATE_HIGHEST / (sizeof(DWORD) * CHAR_BIT) + 1]; /* Bitmap to find out quickly if a state is dirty */ @@ -1815,7 +1815,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_swapchain *swapchain; struct wined3d_surface *current_rt; -@@ -1285,8 +1331,17 @@ +@@ -1287,8 +1333,17 @@ GLfloat fog_coord_value; GLfloat color[4], fogstart, fogend, fogcolor[4]; GLuint dummy_arbfp_prog; @@ -1833,7 +1833,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id); -@@ -1420,8 +1475,12 @@ +@@ -1422,8 +1477,12 @@ void context_apply_blit_state(struct wined3d_context *context, const struct wined3d_device *device) DECLSPEC_HIDDEN; BOOL context_apply_clear_state(struct wined3d_context *context, const struct wined3d_device *device, UINT rt_count, const struct wined3d_fb_state *fb) DECLSPEC_HIDDEN; @@ -1846,7 +1846,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void context_apply_fbo_state_blit(struct wined3d_context *context, GLenum target, struct wined3d_surface *render_target, struct wined3d_surface *depth_stencil, DWORD location) DECLSPEC_HIDDEN; void context_active_texture(struct wined3d_context *context, const struct wined3d_gl_info *gl_info, -@@ -1973,7 +2032,11 @@ +@@ -1975,7 +2034,11 @@ struct wined3d_state { DWORD flags; @@ -1858,7 +1858,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_vertex_declaration *vertex_declaration; struct wined3d_stream_output stream_output[MAX_STREAM_OUT]; -@@ -2018,6 +2081,7 @@ +@@ -2020,6 +2083,7 @@ DWORD render_states[WINEHIGHEST_RENDER_STATE + 1]; }; @@ -1866,7 +1866,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_gl_bo { GLuint name; -@@ -2026,6 +2090,7 @@ +@@ -2028,6 +2092,7 @@ UINT size; }; @@ -1874,7 +1874,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 -@@ -2081,11 +2146,23 @@ +@@ -2083,11 +2148,23 @@ struct wined3d_rendertarget_view *back_buffer_view; struct wined3d_swapchain **swapchains; UINT swapchain_count; @@ -1898,7 +1898,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h /* For rendering to a texture using glCopyTexImage */ GLuint depth_blt_texture; -@@ -2096,6 +2173,9 @@ +@@ -2098,6 +2175,9 @@ UINT xScreenSpace; UINT yScreenSpace; UINT cursorWidth, cursorHeight; @@ -1908,7 +1908,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h HCURSOR hardwareCursor; /* The Wine logo texture */ -@@ -2127,6 +2207,7 @@ +@@ -2129,6 +2209,7 @@ UINT message, WPARAM wparam, LPARAM lparam, WNDPROC proc) DECLSPEC_HIDDEN; 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; @@ -1916,7 +1916,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN; void device_invalidate_shader_constants(const struct wined3d_device *device, DWORD mask) DECLSPEC_HIDDEN; void device_exec_update_texture(struct wined3d_context *context, struct wined3d_texture *src_texture, -@@ -2138,6 +2219,11 @@ +@@ -2140,6 +2221,11 @@ void device_create_dummy_textures(struct wined3d_device *device, struct wined3d_context *context) DECLSPEC_HIDDEN; void device_delete_opengl_contexts_cs(struct wined3d_device *device, struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; @@ -1928,7 +1928,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) { -@@ -2154,9 +2240,11 @@ +@@ -2156,9 +2242,11 @@ ULONG (*resource_incref)(struct wined3d_resource *resource); ULONG (*resource_decref)(struct wined3d_resource *resource); void (*resource_unload)(struct wined3d_resource *resource); @@ -1940,7 +1940,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; struct wined3d_resource -@@ -2181,6 +2269,7 @@ +@@ -2183,6 +2271,7 @@ UINT depth; UINT size; DWORD priority; @@ -1948,7 +1948,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void *heap_memory, *map_heap_memory, *user_memory, *bitmap_data; UINT custom_row_pitch, custom_slice_pitch; struct wined3d_gl_bo *buffer, *map_buffer; -@@ -2188,6 +2277,11 @@ +@@ -2190,6 +2279,11 @@ DWORD locations; LONG access_fence; BOOL unmap_dirtify; @@ -1960,7 +1960,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void *parent; const struct wined3d_parent_ops *parent_ops; -@@ -2212,6 +2306,7 @@ +@@ -2214,6 +2308,7 @@ void *parent, const struct wined3d_parent_ops *parent_ops, const struct wined3d_resource_ops *resource_ops) DECLSPEC_HIDDEN; void resource_unload(struct wined3d_resource *resource) DECLSPEC_HIDDEN; @@ -1968,7 +1968,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h DWORD wined3d_resource_access_from_location(DWORD location) DECLSPEC_HIDDEN; BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN; void wined3d_resource_changed(struct wined3d_resource *resource, -@@ -2258,6 +2353,15 @@ +@@ -2260,6 +2355,15 @@ { while(InterlockedCompareExchange(&resource->access_fence, 0, 0)); } @@ -1984,7 +1984,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h /* Tests show that the start address of resources is 32 byte aligned */ #define RESOURCE_ALIGNMENT 16 -@@ -2342,7 +2446,9 @@ +@@ -2344,7 +2448,9 @@ void wined3d_texture_apply_sampler_desc(struct wined3d_texture *texture, const struct wined3d_sampler_desc *sampler_desc, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN; @@ -1994,7 +1994,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void wined3d_texture_bind(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN; void wined3d_texture_bind_and_dirtify(struct wined3d_texture *texture, -@@ -2376,9 +2482,16 @@ +@@ -2378,9 +2484,16 @@ struct wined3d_resource resource; struct wined3d_texture *container; @@ -2011,7 +2011,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; static inline struct wined3d_volume *volume_from_resource(struct wined3d_resource *resource) -@@ -2386,6 +2499,7 @@ +@@ -2388,6 +2501,7 @@ return CONTAINING_RECORD(resource, struct wined3d_volume, resource); } @@ -2019,7 +2019,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h HRESULT wined3d_volume_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc, unsigned int level, struct wined3d_volume **volume) DECLSPEC_HIDDEN; void wined3d_volume_destroy(struct wined3d_volume *volume) DECLSPEC_HIDDEN; -@@ -2398,6 +2512,23 @@ +@@ -2400,6 +2514,23 @@ struct wined3d_surface_dib { HBITMAP DIBsection; @@ -2043,7 +2043,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h UINT bitmap_size; }; -@@ -2423,7 +2554,11 @@ +@@ -2425,7 +2556,11 @@ struct wined3d_surface_ops { HRESULT (*surface_private_setup)(struct wined3d_surface *surface); @@ -2055,7 +2055,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; struct wined3d_surface -@@ -2431,12 +2566,25 @@ +@@ -2433,12 +2568,25 @@ struct wined3d_resource resource; const struct wined3d_surface_ops *surface_ops; struct wined3d_texture *container; @@ -2081,7 +2081,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h GLuint rb_multisample; GLuint rb_resolved; GLenum texture_target; -@@ -2480,10 +2628,19 @@ +@@ -2482,10 +2630,19 @@ GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) DECLSPEC_HIDDEN; void surface_get_drawable_size(const struct wined3d_surface *surface, const struct wined3d_context *context, unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN; @@ -2101,7 +2101,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void surface_modify_ds_location(struct wined3d_surface *surface, DWORD location, UINT w, UINT h) DECLSPEC_HIDDEN; void surface_prepare_rb(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, BOOL multisample) DECLSPEC_HIDDEN; -@@ -2495,6 +2652,7 @@ +@@ -2497,6 +2654,7 @@ const struct wined3d_gl_info *gl_info, void *mem, unsigned int pitch) DECLSPEC_HIDDEN; HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const POINT *dst_point, struct wined3d_surface *src_surface, const RECT *src_rect) DECLSPEC_HIDDEN; @@ -2109,7 +2109,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h HRESULT wined3d_surface_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc, GLenum target, unsigned int level, unsigned int layer, DWORD flags, struct wined3d_surface **surface) DECLSPEC_HIDDEN; -@@ -2513,6 +2671,21 @@ +@@ -2515,6 +2673,21 @@ void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context, const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN; void surface_flip(struct wined3d_surface *front, struct wined3d_surface *back) DECLSPEC_HIDDEN; @@ -2131,7 +2131,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h /* Surface flags: */ #define SFLAG_DIBSECTION 0x00000001 /* Has a DIB section attached for GetDC. */ -@@ -2560,8 +2733,10 @@ +@@ -2562,8 +2735,10 @@ BOOL half_float_conv_needed; }; @@ -2142,7 +2142,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_saved_states { DWORD transform[(HIGHEST_TRANSFORMSTATE >> 5) + 1]; -@@ -2629,6 +2804,7 @@ +@@ -2631,6 +2806,7 @@ void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN; void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN; @@ -2150,7 +2150,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h HRESULT state_init(struct wined3d_state *state, const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info, DWORD flags) DECLSPEC_HIDDEN; void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN; -@@ -2679,6 +2855,32 @@ +@@ -2681,6 +2857,32 @@ void wined3d_cs_destroy(struct wined3d_cs *cs) DECLSPEC_HIDDEN; void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, struct wined3d_context *context, struct wined3d_surface *depth_stencil) DECLSPEC_HIDDEN; @@ -2183,7 +2183,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h 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; -@@ -2728,6 +2930,7 @@ +@@ -2730,6 +2932,7 @@ 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; @@ -2191,7 +2191,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, const float *constants, UINT vector4f_count, enum wined3d_shader_type type) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_consts_b(struct wined3d_cs *cs, UINT start_register, -@@ -2787,6 +2990,7 @@ +@@ -2789,6 +2992,7 @@ struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; void wined3d_cs_emit_getdc(struct wined3d_cs *cs, struct wined3d_surface *surface) DECLSPEC_HIDDEN; void wined3d_cs_emit_releasedc(struct wined3d_cs *cs, struct wined3d_surface *surface) DECLSPEC_HIDDEN; @@ -2199,7 +2199,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h /* Direct3D terminology with little modifications. We do not have an issued state * because only the driver knows about it, but we have a created state because d3d -@@ -2801,8 +3005,12 @@ +@@ -2803,8 +3007,12 @@ struct wined3d_query_ops { HRESULT (*query_get_data)(struct wined3d_query *query, void *data, DWORD data_size, DWORD flags); @@ -2212,7 +2212,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; struct wined3d_query -@@ -2816,12 +3024,16 @@ +@@ -2818,12 +3026,16 @@ enum wined3d_query_type type; DWORD data_size; void *extendedData; @@ -2229,7 +2229,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h /* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other * fixed function semantics as D3DCOLOR or FLOAT16 */ -@@ -2848,7 +3060,9 @@ +@@ -2850,7 +3062,9 @@ GLenum buffer_object_usage; GLenum buffer_type_hint; DWORD flags; @@ -2239,7 +2239,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h void *map_ptr; struct wined3d_map_range *maps; -@@ -2873,11 +3087,15 @@ +@@ -2875,11 +3089,15 @@ BYTE *buffer_get_sysmem(struct wined3d_buffer *This, struct wined3d_context *context) DECLSPEC_HIDDEN; void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_context *context, const struct wined3d_state *state) DECLSPEC_HIDDEN; @@ -2255,7 +2255,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_rendertarget_view { -@@ -2916,8 +3134,10 @@ +@@ -2918,8 +3136,10 @@ return surface_from_resource(resource); } @@ -2266,7 +2266,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h struct wined3d_shader_resource_view { LONG refcount; -@@ -2930,8 +3150,12 @@ +@@ -2932,8 +3152,12 @@ struct wined3d_swapchain_ops { void (*swapchain_present)(struct wined3d_swapchain *swapchain, const RECT *src_rect, @@ -2279,7 +2279,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h }; struct wined3d_swapchain -@@ -2971,8 +3195,10 @@ +@@ -2973,8 +3197,10 @@ HDC swapchain_get_backup_dc(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; void swapchain_update_draw_bindings(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; void swapchain_update_render_to_fbo(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; @@ -2290,7 +2290,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h /***************************************************************************** * Utility function prototypes -@@ -3176,7 +3402,9 @@ +@@ -3178,7 +3404,9 @@ void shader_generate_main(const struct wined3d_shader *shader, struct wined3d_string_buffer *buffer, const struct wined3d_shader_reg_maps *reg_maps, const DWORD *byte_code, void *backend_ctx) DECLSPEC_HIDDEN; BOOL shader_match_semantic(const char *semantic_name, enum wined3d_decl_usage usage) DECLSPEC_HIDDEN; @@ -3704,7 +3704,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c wined3d_cs_emit_set_primitive_type(device->cs, gl_primitive_type); +#else /* STAGING_CSMT */ + else if (gl_primitive_type != prev && (gl_primitive_type == GL_POINTS || prev == GL_POINTS)) -+ device_invalidate_state(device, STATE_POINT_SIZE_ENABLE); ++ device_invalidate_state(device, STATE_POINT_ENABLE); +#endif /* STAGING_CSMT */ } @@ -4508,7 +4508,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c -@@ -1497,9 +1497,17 @@ +@@ -1527,9 +1527,17 @@ const struct wined3d_shader_reg_maps *reg_maps, const struct shader_glsl_ctx_priv *ctx_priv) { const struct wined3d_shader_version *version = ®_maps->shader_version; @@ -4526,7 +4526,7 @@ diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c unsigned int i, extra_constants_needed = 0; const struct wined3d_shader_lconst *lconst; const char *prefix; -@@ -1749,7 +1757,11 @@ +@@ -1789,7 +1797,11 @@ { UINT in_count = min(vec4_varyings(version->major, gl_info), shader->limits->packed_input); @@ -4538,7 +4538,7 @@ diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c shader_addline(buffer, "varying vec4 %s_link[%u];\n", prefix, in_count); shader_addline(buffer, "vec4 %s_in[%u];\n", prefix, in_count); } -@@ -1790,6 +1802,7 @@ +@@ -1830,6 +1842,7 @@ } else { @@ -4546,7 +4546,7 @@ diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c /* This happens because we do not have proper tracking of the * constant registers that are actually used, only the max * limit of the shader version. -@@ -1798,6 +1811,23 @@ +@@ -1838,6 +1851,23 @@ * it and just create the uniform. */ FIXME("Cannot find a free uniform for vpos correction params\n");