diff --git a/patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch b/patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch index e74f4b5f..f1e44bd6 100644 --- a/patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch +++ b/patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch @@ -1,18 +1,18 @@ -From bcb51e3caed3cb8c5bc6ed90b3c53f9d9175e1e9 Mon Sep 17 00:00:00 2001 +From 4183758f3b4ae2322c807411b5f059cbea177e20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 4 Feb 2017 16:20:37 +0100 Subject: [PATCH] kernel32: Implement some processor group functions. --- - .../api-ms-win-core-kernel32-legacy-l1-1-0.spec | 2 +- - dlls/kernel32/cpu.c | 45 ++++++++++++++++++---- - dlls/kernel32/kernel32.spec | 4 +- - dlls/kernel32/tests/process.c | 23 +++++++++++ - include/winnt.h | 2 + - 5 files changed, 66 insertions(+), 10 deletions(-) + ...pi-ms-win-core-kernel32-legacy-l1-1-0.spec | 2 +- + dlls/kernel32/cpu.c | 28 ++++++++++++++----- + dlls/kernel32/kernel32.spec | 2 +- + dlls/kernel32/tests/process.c | 23 +++++++++++++++ + include/winnt.h | 2 ++ + 5 files changed, 48 insertions(+), 9 deletions(-) diff --git a/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec b/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec -index e653ac6..b6af37a 100644 +index e653ac6d21..b6af37ab0a 100644 --- a/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec +++ b/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec @@ -21,7 +21,7 @@ @@ -25,10 +25,10 @@ index e653ac6..b6af37a 100644 @ stdcall GetNamedPipeServerProcessId(long ptr) kernel32.GetNamedPipeServerProcessId @ stdcall GetShortPathNameA(str ptr long) kernel32.GetShortPathNameA diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c -index 5be6201..757853a 100644 +index 89482a65e1..ffb88e313c 100644 --- a/dlls/kernel32/cpu.c +++ b/dlls/kernel32/cpu.c -@@ -291,7 +291,9 @@ SIZE_T WINAPI GetLargePageMinimum(void) +@@ -309,7 +309,9 @@ SIZE_T WINAPI GetLargePageMinimum(void) */ WORD WINAPI GetActiveProcessorGroupCount(void) { @@ -39,20 +39,24 @@ index 5be6201..757853a 100644 return 1; } -@@ -300,14 +302,43 @@ WORD WINAPI GetActiveProcessorGroupCount(void) +@@ -318,14 +320,26 @@ WORD WINAPI GetActiveProcessorGroupCount(void) */ DWORD WINAPI GetActiveProcessorCount(WORD group) { - SYSTEM_INFO si; - DWORD cpus; + TRACE("(%u)\n", group); -+ + +- GetSystemInfo( &si ); +- cpus = si.dwNumberOfProcessors; + if (group && group != ALL_PROCESSOR_GROUPS) + { + SetLastError(ERROR_INVALID_PARAMETER); + return 0; + } -+ + +- FIXME("semi-stub, returning %u\n", cpus); +- return cpus; + return system_info.NumberOfProcessors; +} + @@ -62,50 +66,27 @@ index 5be6201..757853a 100644 +WORD WINAPI GetMaximumProcessorGroupCount(void) +{ + TRACE("()\n"); - -- GetSystemInfo( &si ); -- cpus = si.dwNumberOfProcessors; ++ + /* systems with less than 64 logical processors only have group 0 */ + return 1; -+} -+ -+/*********************************************************************** -+ * GetMaximumProcessorCount (KERNEL32.@) -+ */ -+DWORD WINAPI GetMaximumProcessorCount(WORD group) -+{ -+ TRACE("(%u)\n", group); -+ -+ if (group && group != ALL_PROCESSOR_GROUPS) -+ { -+ SetLastError(ERROR_INVALID_PARAMETER); -+ return 0; -+ } - -- FIXME("semi-stub, returning %u\n", cpus); -- return cpus; -+ /* Wine only counts active processors so far */ -+ return system_info.NumberOfProcessors; } /*********************************************************************** diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec -index e4a9e46..eb91df2 100644 +index 5490b07d8e..899aa55d76 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec -@@ -716,8 +716,8 @@ - # @ stub GetLongPathNameTransactedW +@@ -716,7 +716,7 @@ @ stdcall GetLongPathNameW (wstr long long) @ stdcall GetMailslotInfo(long ptr ptr ptr ptr) --# @ stub GetMaximumProcessorCount + @ stdcall GetMaximumProcessorCount(long) -# @ stub GetMaximumProcessorGroupCount -+@ stdcall GetMaximumProcessorCount(long) +@ stdcall GetMaximumProcessorGroupCount() @ stdcall GetModuleFileNameA(long ptr long) @ stdcall GetModuleFileNameW(long ptr long) @ stdcall GetModuleHandleA(str) diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c -index 5324894..6dd6f03 100644 +index fe68d28e91..dc26549b67 100644 --- a/dlls/kernel32/tests/process.c +++ b/dlls/kernel32/tests/process.c @@ -91,6 +91,7 @@ static SIZE_T (WINAPI *pGetLargePageMinimum)(void); @@ -124,7 +105,7 @@ index 5324894..6dd6f03 100644 return TRUE; } -@@ -3872,6 +3874,26 @@ static void test_ProcThreadAttributeList(void) +@@ -3784,6 +3786,26 @@ static void test_ProcThreadAttributeList(void) pDeleteProcThreadAttributeList(&list); } @@ -151,7 +132,7 @@ index 5324894..6dd6f03 100644 START_TEST(process) { HANDLE job; -@@ -3946,6 +3968,7 @@ START_TEST(process) +@@ -3868,6 +3890,7 @@ START_TEST(process) test_GetNumaProcessorNode(); test_session_info(); test_GetLogicalProcessorInformationEx(); @@ -160,10 +141,10 @@ index 5324894..6dd6f03 100644 test_ProcThreadAttributeList(); test_SuspendProcessState(); diff --git a/include/winnt.h b/include/winnt.h -index b8bab01..a54de27 100644 +index 035d5bd097..07e7c7bb60 100644 --- a/include/winnt.h +++ b/include/winnt.h -@@ -5972,6 +5972,8 @@ typedef struct _GROUP_AFFINITY +@@ -6093,6 +6093,8 @@ typedef struct _GROUP_AFFINITY WORD Reserved[3]; } GROUP_AFFINITY, *PGROUP_AFFINITY; @@ -173,5 +154,5 @@ index b8bab01..a54de27 100644 { WORD Group; -- -1.9.1 +2.19.1 diff --git a/patches/oleaut32-DispCallFunc/0001-oleaut32-Fix-calling-function-with-instance-and-VARI.patch b/patches/oleaut32-DispCallFunc/0001-oleaut32-Fix-calling-function-with-instance-and-VARI.patch deleted file mode 100644 index 4080eaba..00000000 --- a/patches/oleaut32-DispCallFunc/0001-oleaut32-Fix-calling-function-with-instance-and-VARI.patch +++ /dev/null @@ -1,145 +0,0 @@ -From fcc683802ce5c7dac4127339fb2d3a6675ee87ff Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov -Date: Thu, 19 Jan 2017 11:48:24 +0800 -Subject: oleaut32: Fix calling function with instance and VARIANT return type. - (v2) - ---- - dlls/oleaut32/tests/typelib.c | 59 +++++++++++++++++++++++++++++++++++++++++-- - dlls/oleaut32/typelib.c | 26 ++++++++++++++++--- - 2 files changed, 79 insertions(+), 6 deletions(-) - -diff --git a/dlls/oleaut32/tests/typelib.c b/dlls/oleaut32/tests/typelib.c -index 6d0585a9cee..8f1b9d56fd1 100644 ---- a/dlls/oleaut32/tests/typelib.c -+++ b/dlls/oleaut32/tests/typelib.c -@@ -1084,11 +1084,41 @@ static HRESULT WINAPI ret_false_func(void) - return S_FALSE; - } - --static const void *vtable[] = { NULL, NULL, NULL, inst_func }; -+static const WCHAR testW[] = { 'T','e','s','t',0 }; -+ -+static void WINAPI variant_func2(VARIANT *ret, VARIANT v1, VARIANT v2) -+{ -+ ok(V_VT(&v1) == VT_I4, "unexpected %d\n", V_VT(&v1)); -+ ok(V_I4(&v1) == 2, "unexpected %d\n", V_I4(&v1)); -+ ok(V_VT(&v2) == VT_BSTR, "unexpected %d\n", V_VT(&v2)); -+ ok(lstrcmpW(V_BSTR(&v2), testW) == 0, "unexpected %s\n", wine_dbgstr_w(V_BSTR(&v2))); -+ -+ V_VT(ret) = VT_UI4; -+ V_I4(ret) = 4321; -+} -+ -+static void WINAPI inst_func2(void *inst, VARIANT *ret, VARIANT v1, VARIANT v2) -+{ -+ ok( (*(void ***)inst)[3] == inst_func2, "wrong ptr %p\n", inst ); -+ -+ ok(V_VT(ret) == VT_I4 || broken(V_VT(ret) == VT_VARIANT) /* win64 */, "unexpected %d\n", V_VT(ret)); -+ ok(V_I4(ret) == 1234, "unexpected %d\n", V_I4(ret)); -+ -+ ok(V_VT(&v1) == VT_I4, "unexpected %d\n", V_VT(&v1)); -+ ok(V_I4(&v1) == 2, "unexpected %d\n", V_I4(&v1)); -+ ok(V_VT(&v2) == VT_BSTR, "unexpected %d\n", V_VT(&v2)); -+ ok(lstrcmpW(V_BSTR(&v2), testW) == 0, "unexpected %s\n", wine_dbgstr_w(V_BSTR(&v2))); -+ -+ V_VT(ret) = VT_UI4; -+ V_I4(ret) = 4321; -+} -+ -+static void *vtable[] = { NULL, NULL, NULL, inst_func }; -+static void *vtable2[] = { NULL, NULL, NULL, inst_func2 }; - - static void test_DispCallFunc(void) - { -- const void **inst = vtable; -+ void **inst; - HRESULT res; - VARIANT result, args[5]; - VARIANTARG *pargs[5]; -@@ -1098,6 +1128,30 @@ static void test_DispCallFunc(void) - for (i = 0; i < 5; i++) pargs[i] = &args[i]; - - memset( args, 0x55, sizeof(args) ); -+ -+ types[0] = VT_VARIANT; -+ V_VT(&args[0]) = VT_I4; -+ V_I4(&args[0]) = 2; -+ types[1] = VT_VARIANT; -+ V_VT(&args[1]) = VT_BSTR; -+ V_BSTR(&args[1]) = SysAllocString(testW); -+ memset( &result, 0xcc, sizeof(result) ); -+ res = DispCallFunc(NULL, (ULONG_PTR)variant_func2, CC_STDCALL, VT_VARIANT, 2, types, pargs, &result); -+ ok(res == S_OK, "DispCallFunc error %#x\n", res); -+ ok(V_VT(&result) == VT_UI4, "wrong result type %d\n", V_VT(&result)); -+ ok(V_UI4(&result) == 4321, "wrong result %u\n", V_UI4(&result)); -+ -+ V_VT(&result) = VT_I4; -+ V_UI4(&result) = 1234; -+ inst = vtable2; -+ res = DispCallFunc(&inst, 3 * sizeof(void *), CC_STDCALL, VT_VARIANT, 2, types, pargs, &result); -+ ok(res == S_OK, "DispCallFunc error %#x\n", res); -+ ok(V_VT(&result) == VT_UI4, "wrong result type %d\n", V_VT(&result)); -+ ok(V_UI4(&result) == 4321, "wrong result %u\n", V_UI4(&result)); -+ -+ VariantClear(&args[1]); -+ -+ memset( args, 0x55, sizeof(args) ); - types[0] = VT_UI4; - V_UI4(&args[0]) = 1; - types[1] = VT_I4; -@@ -1195,6 +1249,7 @@ static void test_DispCallFunc(void) - types[0] = VT_I4; - V_I4(&args[0]) = 3; - memset( &result, 0xcc, sizeof(result) ); -+ inst = vtable; - res = DispCallFunc( &inst, 3 * sizeof(void*), CC_STDCALL, VT_I4, 1, types, pargs, &result ); - ok( res == S_OK, "DispCallFunc failed %x\n", res ); - ok( V_VT(&result) == VT_I4, "wrong result type %d\n", V_VT(&result) ); -diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c -index ef2cb04ee3c..f2fd16be718 100644 ---- a/dlls/oleaut32/typelib.c -+++ b/dlls/oleaut32/typelib.c -@@ -6882,8 +6882,17 @@ DispCallFunc( - break; - case VT_DECIMAL: - case VT_VARIANT: -- args[0] = (DWORD)pvargResult; /* arg 0 is a pointer to the result */ -- call_method( func, argspos, args, &stack_offset ); -+ if (pvInstance) -+ { -+ args[0] = (DWORD)pvInstance; /* arg 0 is a pointer to the instance */ -+ args[1] = (DWORD)pvargResult; /* arg 1 is a pointer to the result */ -+ call_method( func, argspos, args, &stack_offset ); -+ } -+ else -+ { -+ args[0] = (DWORD)pvargResult; /* arg 0 is a pointer to the result */ -+ call_method( func, argspos, args, &stack_offset ); -+ } - break; - case VT_I8: - case VT_UI8: -@@ -6968,8 +6977,17 @@ DispCallFunc( - break; - case VT_DECIMAL: - case VT_VARIANT: -- args[0] = (DWORD_PTR)pvargResult; /* arg 0 is a pointer to the result */ -- call_method( func, argspos, args ); -+ if (pvInstance) -+ { -+ args[0] = (DWORD_PTR)pvInstance; /* arg 0 is a pointer to the instance */ -+ args[1] = (DWORD_PTR)pvargResult; /* arg 1 is a pointer to the result */ -+ call_method( func, argspos, args ); -+ } -+ else -+ { -+ args[0] = (DWORD_PTR)pvargResult; /* arg 0 is a pointer to the result */ -+ call_method( func, argspos, args ); -+ } - break; - case VT_HRESULT: - WARN("invalid return type %u\n", vtReturn); --- -2.11.0 - diff --git a/patches/oleaut32-DispCallFunc/definition b/patches/oleaut32-DispCallFunc/definition deleted file mode 100644 index 234c52dd..00000000 --- a/patches/oleaut32-DispCallFunc/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [40160] Fix calling function with instance and VARIANT return type in DispCallFunc diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 73a84fa9..a1601f51 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "ebae298aa4d2711fef35d4ac60c6012438f36d61" + echo "ead7e637c0d18760acd446d686ad18526e76e0f0" } # Show version information @@ -250,7 +250,6 @@ patch_enable_all () enable_ole32_HGLOBALStream="$1" enable_ole32_STGPROP="$1" enable_oleaut32_CreateTypeLib="$1" - enable_oleaut32_DispCallFunc="$1" enable_oleaut32_ITypeInfo_fnInvoke="$1" enable_oleaut32_Load_Save_EMF="$1" enable_oleaut32_OLEPictureImpl_SaveAsFile="$1" @@ -917,9 +916,6 @@ patch_enable () oleaut32-CreateTypeLib) enable_oleaut32_CreateTypeLib="$2" ;; - oleaut32-DispCallFunc) - enable_oleaut32_DispCallFunc="$2" - ;; oleaut32-ITypeInfo_fnInvoke) enable_oleaut32_ITypeInfo_fnInvoke="$2" ;; @@ -2427,7 +2423,7 @@ fi # | Modified files: # | * dlls/advapi32/advapi32.spec, dlls/advapi32/registry.c, dlls/api-ms-win-core-registry-l1-1-0/api-ms-win-core- # | registry-l1-1-0.spec, dlls/api-ms-win-downlevel-advapi32-l1-1-0/api-ms-win-downlevel-advapi32-l1-1-0.spec, -# | dlls/kernelbase/kernelbase.spec +# | dlls/kernelbase/kernelbase.spec, include/winreg.h # | if test "$enable_advapi32_RegLoadAppKey" -eq 1; then patch_apply advapi32-RegLoadAppKey/0001-advapi32-Add-RegLoadAppKeyA-RegLoadAppKeyW-stubs.patch @@ -5410,21 +5406,6 @@ if test "$enable_oleaut32_CreateTypeLib" -eq 1; then ) >> "$patchlist" fi -# Patchset oleaut32-DispCallFunc -# | -# | This patchset fixes the following Wine bugs: -# | * [#40160] Fix calling function with instance and VARIANT return type in DispCallFunc -# | -# | Modified files: -# | * dlls/oleaut32/tests/typelib.c, dlls/oleaut32/typelib.c -# | -if test "$enable_oleaut32_DispCallFunc" -eq 1; then - patch_apply oleaut32-DispCallFunc/0001-oleaut32-Fix-calling-function-with-instance-and-VARI.patch - ( - printf '%s\n' '+ { "Dmitry Timoshkov", "oleaut32: Fix calling function with instance and VARIANT return type.", 2 },'; - ) >> "$patchlist" -fi - # Patchset oleaut32-ITypeInfo_fnInvoke # | # | This patchset fixes the following Wine bugs: @@ -7325,14 +7306,12 @@ fi # | wined3d-UAV_Counters # | # | Modified files: -# | * dlls/wined3d/cs.c, dlls/wined3d/device.c, dlls/wined3d/view.c, dlls/wined3d/wined3d_private.h +# | * dlls/wined3d/cs.c, dlls/wined3d/device.c, dlls/wined3d/wined3d_private.h # | if test "$enable_wined3d_CSMT_Main" -eq 1; then - patch_apply wined3d-CSMT_Main/0001-wined3d-Add-additional-synchronization-CS-ops.patch patch_apply wined3d-CSMT_Main/0042-wined3d-Reset-context-before-destruction.patch patch_apply wined3d-CSMT_Main/0045-wined3d-Improve-wined3d_cs_emit_update_sub_resource.patch ( - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Add additional synchronization CS ops.", 1 },'; printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Reset context before destruction.", 1 },'; printf '%s\n' '+ { "Michael Müller", "wined3d: Improve wined3d_cs_emit_update_sub_resource.", 1 },'; ) >> "$patchlist" diff --git a/patches/windowscodecs-JPEG_Decoder/0004-windowscodecs-Move-JPEG-frame-image-data-initializat.patch b/patches/windowscodecs-JPEG_Decoder/0004-windowscodecs-Move-JPEG-frame-image-data-initializat.patch index b8cac1e5..ee5fb498 100644 --- a/patches/windowscodecs-JPEG_Decoder/0004-windowscodecs-Move-JPEG-frame-image-data-initializat.patch +++ b/patches/windowscodecs-JPEG_Decoder/0004-windowscodecs-Move-JPEG-frame-image-data-initializat.patch @@ -1,18 +1,18 @@ -From 6599895d37972742aa9a5709972af934e9c0800f Mon Sep 17 00:00:00 2001 +From 11fa0f222539e2dedaed99783ad6af4577eae250 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Fri, 18 Aug 2017 12:17:52 +0800 -Subject: [PATCH] windowscodecs: Move JPEG frame image data initialization from - Frame::CopyPixels to Decoder::Initialize. (v2) +Subject: [PATCH 714/851] windowscodecs: Move JPEG frame image data + initialization from Frame::CopyPixels to Decoder::Initialize. (v2) This is how PNG decoder does things, and it avoids image data corruption in some cases (presumably when libjpeg reuses existing scanline data). --- dlls/windowscodecs/converter.c | 1 + - dlls/windowscodecs/jpegformat.c | 152 +++++++++++++++------------------------- + dlls/windowscodecs/jpegformat.c | 152 ++++++++++++-------------------- 2 files changed, 57 insertions(+), 96 deletions(-) diff --git a/dlls/windowscodecs/converter.c b/dlls/windowscodecs/converter.c -index 42ba260..ad2b3de 100644 +index d23c26250c..39c926c5ca 100644 --- a/dlls/windowscodecs/converter.c +++ b/dlls/windowscodecs/converter.c @@ -30,6 +30,7 @@ @@ -24,7 +24,7 @@ index 42ba260..ad2b3de 100644 WINE_DEFAULT_DEBUG_CHANNEL(wincodecs); diff --git a/dlls/windowscodecs/jpegformat.c b/dlls/windowscodecs/jpegformat.c -index 27cd880..1feff69 100644 +index c846e6191c..3fb52661a8 100644 --- a/dlls/windowscodecs/jpegformat.c +++ b/dlls/windowscodecs/jpegformat.c @@ -50,6 +50,7 @@ @@ -108,7 +108,7 @@ index 27cd880..1feff69 100644 This->initialized = TRUE; LeaveCriticalSection(&This->lock); -@@ -597,104 +650,11 @@ static HRESULT WINAPI JpegDecoder_Frame_CopyPixels(IWICBitmapFrameDecode *iface, +@@ -590,104 +643,11 @@ static HRESULT WINAPI JpegDecoder_Frame_CopyPixels(IWICBitmapFrameDecode *iface, const WICRect *prc, UINT cbStride, UINT cbBufferSize, BYTE *pbBuffer) { JpegDecoder *This = impl_from_IWICBitmapFrameDecode(iface); @@ -118,7 +118,7 @@ index 27cd880..1feff69 100644 - UINT max_row_needed; - jmp_buf jmpbuf; - WICRect rect; -- TRACE("(%p,%p,%u,%u,%p)\n", iface, prc, cbStride, cbBufferSize, pbBuffer); +- TRACE("(%p,%s,%u,%u,%p)\n", iface, debug_wic_rect(prc), cbStride, cbBufferSize, pbBuffer); - - if (!prc) - { @@ -207,7 +207,7 @@ index 27cd880..1feff69 100644 - } - - LeaveCriticalSection(&This->lock); -+ TRACE("(%p,%p,%u,%u,%p)\n", iface, prc, cbStride, cbBufferSize, pbBuffer); ++ TRACE("(%p,%s,%u,%u,%p)\n", iface, debug_wic_rect(prc), cbStride, cbBufferSize, pbBuffer); - return copy_pixels(bpp, This->image_data, - This->cinfo.output_width, This->cinfo.output_height, stride, @@ -217,5 +217,5 @@ index 27cd880..1feff69 100644 } -- -1.9.1 +2.19.1 diff --git a/patches/wined3d-CSMT_Main/0001-wined3d-Add-additional-synchronization-CS-ops.patch b/patches/wined3d-CSMT_Main/0001-wined3d-Add-additional-synchronization-CS-ops.patch deleted file mode 100644 index 03bf2b32..00000000 --- a/patches/wined3d-CSMT_Main/0001-wined3d-Add-additional-synchronization-CS-ops.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 61838c8fd1fd47dbbe71c74946b652aa441b7e91 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sun, 19 Feb 2017 00:57:12 +0100 -Subject: [PATCH] wined3d: Add additional synchronization CS ops. - ---- - dlls/wined3d/view.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c -index 59a30ead..f4327373 100644 ---- a/dlls/wined3d/view.c -+++ b/dlls/wined3d/view.c -@@ -775,6 +775,8 @@ static void wined3d_shader_resource_view_cs_init(void *object) - debug_d3dformat(resource->format->id), debug_d3dformat(view_format->id)); - } - } -+ -+ wined3d_resource_release(resource); - } - - static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_view *view, -@@ -791,6 +793,7 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_ - - wined3d_resource_incref(view->resource = resource); - -+ wined3d_resource_acquire(resource); - wined3d_cs_init_object(resource->device->cs, wined3d_shader_resource_view_cs_init, view); - - return WINED3D_OK; -@@ -1145,6 +1148,8 @@ static void wined3d_unordered_access_view_cs_init(void *object) - desc, texture_gl, view->format); - } - } -+ -+ wined3d_resource_release(resource); - } - - static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_access_view *view, -@@ -1161,6 +1166,7 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces - - wined3d_resource_incref(view->resource = resource); - -+ wined3d_resource_acquire(resource); - wined3d_cs_init_object(resource->device->cs, wined3d_unordered_access_view_cs_init, view); - - return WINED3D_OK; --- -2.19.1 -