winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
August 2020
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
692 discussions
Start a n
N
ew thread
Alexandre Julliard : ntdll: Don't expect LdrInitializeThunk() to return to the Unix side.
by Alexandre Julliard
20 Aug '20
20 Aug '20
Module: wine Branch: master Commit: 53e0bf2f9f0f9876ca89e4c9133d9d5265b3e9dd URL:
https://source.winehq.org/git/wine.git/?a=commit;h=53e0bf2f9f0f9876ca89e4c9…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Aug 20 15:30:08 2020 +0200 ntdll: Don't expect LdrInitializeThunk() to return to the Unix side. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/unix/server.c | 2 +- dlls/ntdll/unix/signal_arm.c | 23 ++++++++----------- dlls/ntdll/unix/signal_arm64.c | 49 ++++++++++------------------------------- dlls/ntdll/unix/signal_i386.c | 25 +++++++++------------ dlls/ntdll/unix/signal_x86_64.c | 25 +++++++++------------ dlls/ntdll/unix/thread.c | 3 ++- dlls/ntdll/unix/unix_private.h | 2 +- dlls/ntdll/unix/virtual.c | 15 ------------- 8 files changed, 45 insertions(+), 99 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=53e0bf2f9f0f9876ca89…
1
0
0
0
Alexandre Julliard : ntdll: Call NtContinue() from LdrInitializeThunk() instead of returning.
by Alexandre Julliard
20 Aug '20
20 Aug '20
Module: wine Branch: master Commit: 4a7cd0f492affbc0eb347b97426b8c23f9a4f976 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4a7cd0f492affbc0eb347b97…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Aug 20 15:27:30 2020 +0200 ntdll: Call NtContinue() from LdrInitializeThunk() instead of returning. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/loader.c | 3 ++- dlls/ntdll/ntdll_misc.h | 1 + dlls/ntdll/signal_arm.c | 11 +++++++++++ dlls/ntdll/signal_arm64.c | 11 +++++++++++ dlls/ntdll/signal_i386.c | 16 ++++++++++++++++ dlls/ntdll/signal_x86_64.c | 14 ++++++++++++++ dlls/ntdll/virtual.c | 16 ++++++++++++++++ 7 files changed, 71 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index 6290cbcb4e..54d56f4e14 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -3416,7 +3416,7 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow WINE_MODREF *wm; LPCWSTR load_path = NtCurrentTeb()->Peb->ProcessParameters->DllPath.Buffer; - if (process_detaching) return; + if (process_detaching) NtTerminateThread( GetCurrentThread(), 0 ); RtlEnterCriticalSection( &loader_section ); @@ -3486,6 +3486,7 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow } RtlLeaveCriticalSection( &loader_section ); + signal_start_thread( context ); } diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index a97dadb2a5..63ceac42e9 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -65,6 +65,7 @@ extern void init_unix_codepage(void) DECLSPEC_HIDDEN; extern void init_locale( HMODULE module ) DECLSPEC_HIDDEN; extern void init_user_process_params(void) DECLSPEC_HIDDEN; extern NTSTATUS restart_process( RTL_USER_PROCESS_PARAMETERS *params, NTSTATUS status ) DECLSPEC_HIDDEN; +extern void CDECL DECLSPEC_NORETURN signal_start_thread( CONTEXT *ctx ) DECLSPEC_HIDDEN; /* server support */ extern BOOL is_wow64 DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/signal_arm.c b/dlls/ntdll/signal_arm.c index ba455ea71e..1041dadf86 100644 --- a/dlls/ntdll/signal_arm.c +++ b/dlls/ntdll/signal_arm.c @@ -263,6 +263,17 @@ USHORT WINAPI RtlCaptureStackBackTrace( ULONG skip, ULONG count, PVOID *buffer, return 0; } +/*********************************************************************** + * signal_start_thread + */ +__ASM_GLOBAL_FUNC( signal_start_thread, + "mov sp, r0\n\t" /* context */ + "and r0, #~0xff0\n\t" /* round down to page size */ + "bl " __ASM_NAME("virtual_clear_thread_stack") "\n\t" + "mov r1, #1\n\t" + "mov r0, sp\n\t" + "b " __ASM_NAME("NtContinue") ) + /********************************************************************** * DbgBreakPoint (NTDLL.@) */ diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c index a35e48c1d6..e3102f7bdf 100644 --- a/dlls/ntdll/signal_arm64.c +++ b/dlls/ntdll/signal_arm64.c @@ -1188,6 +1188,17 @@ USHORT WINAPI RtlCaptureStackBackTrace( ULONG skip, ULONG count, PVOID *buffer, return 0; } +/*********************************************************************** + * signal_start_thread + */ +__ASM_GLOBAL_FUNC( signal_start_thread, + "mov sp, x0\n\t" /* context */ + "and x0, x0, #~0xfff\n\t" /* round down to page size */ + "bl " __ASM_NAME("virtual_clear_thread_stack") "\n\t" + "mov x0, sp\n\t" + "mov x1, #1\n\t" + "b " __ASM_NAME("NtContinue") ) + /********************************************************************** * DbgBreakPoint (NTDLL.@) */ diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index b65beb7215..8cdce3384a 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -498,6 +498,22 @@ USHORT WINAPI RtlCaptureStackBackTrace( ULONG skip, ULONG count, PVOID *buffer, } +/*********************************************************************** + * signal_start_thread + */ +__ASM_GLOBAL_FUNC( signal_start_thread, + "movl 4(%esp),%esi\n\t" /* context */ + "leal -12(%esi),%eax\n\t" + "movl %eax,%esp\n\t" + /* clear the stack */ + "andl $~0xfff,%eax\n\t" /* round down to page size */ + "movl %eax,(%esp)\n\t" + "call " __ASM_NAME("virtual_clear_thread_stack") "\n\t" + /* switch to the initial context */ + "movl $1,4(%esp)\n\t" + "movl %esi,(%esp)\n\t" + "call " __ASM_STDCALL("NtContinue", 8) ) + /********************************************************************** * DbgBreakPoint (NTDLL.@) */ diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index 40ed53c10d..e1cf7f3e01 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -1477,6 +1477,20 @@ USHORT WINAPI RtlCaptureStackBackTrace( ULONG skip, ULONG count, PVOID *buffer, } +/*********************************************************************** + * signal_start_thread + */ +__ASM_GLOBAL_FUNC( signal_start_thread, + "movq %rcx,%rbx\n\t" /* context */ + "leaq -32(%rcx),%rcx\n\t" + "movq %rcx,%rsp\n\t" + "andq $~0xfff,%rcx\n\t" /* round down to page size */ + "call " __ASM_NAME("virtual_clear_thread_stack") "\n\t" + "movl $1,%edx\n\t" + "movq %rbx,%rcx\n\t" + "call " __ASM_NAME("NtContinue") ) + + /********************************************************************** * DbgBreakPoint (NTDLL.@) */ diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 3ba4b8afbc..64eef6aa84 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -106,6 +106,22 @@ void WINAPI RtlFreeUserStack( void *stack ) NtFreeVirtualMemory( NtCurrentProcess(), &stack, &size, MEM_RELEASE ); } + +/*********************************************************************** + * virtual_clear_thread_stack + * + * Clear the stack contents before calling the main entry point, some broken apps need that. + */ +void CDECL virtual_clear_thread_stack( void *stack_end ) +{ + void *stack = NtCurrentTeb()->Tib.StackLimit; + SIZE_T size = (char *)stack_end - (char *)stack; + + NtFreeVirtualMemory( GetCurrentProcess(), &stack, &size, MEM_DECOMMIT ); + NtAllocateVirtualMemory( GetCurrentProcess(), &stack, 0, &size, MEM_COMMIT, PAGE_READWRITE ); +} + + /*********************************************************************** * __wine_locked_recvmsg */
1
0
0
0
Henri Verbeet : vkd3d-shader: Handle non-contiguous destination write masks in vkd3d_dxbc_compiler_emit_store().
by Alexandre Julliard
20 Aug '20
20 Aug '20
Module: vkd3d Branch: master Commit: fb93449c8578d856d80ed7b44516900a4acd2c1f URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=fb93449c8578d856d80ed7b…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Thu Aug 20 23:57:45 2020 +0430 vkd3d-shader: Handle non-contiguous destination write masks in vkd3d_dxbc_compiler_emit_store(). Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- libs/vkd3d-shader/spirv.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index c677963..14ff7f4 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -3379,7 +3379,7 @@ static void vkd3d_dxbc_compiler_emit_store(struct vkd3d_dxbc_compiler *compiler, struct vkd3d_spirv_builder *builder = &compiler->spirv_builder; unsigned int component_count, dst_component_count; uint32_t components[VKD3D_VEC4_SIZE]; - unsigned int i, component_idx; + unsigned int i, src_idx, dst_idx; uint32_t type_id, dst_val_id; assert(write_mask); @@ -3409,12 +3409,15 @@ static void vkd3d_dxbc_compiler_emit_store(struct vkd3d_dxbc_compiler *compiler, assert(component_count <= ARRAY_SIZE(components)); - for (i = 0, component_idx = 0; i < dst_component_count; ++i) + for (i = 0, src_idx = 0, dst_idx = 0; dst_idx < VKD3D_VEC4_SIZE; ++dst_idx) { - if (write_mask & (VKD3DSP_WRITEMASK_0 << i)) - components[i] = dst_component_count + component_idx++; + if (write_mask & (VKD3DSP_WRITEMASK_0 << dst_idx)) + components[i] = dst_component_count + src_idx++; else components[i] = i; + + if (dst_write_mask & (VKD3DSP_WRITEMASK_0 << dst_idx)) + ++i; } val_id = vkd3d_spirv_build_op_vector_shuffle(builder,
1
0
0
0
Henri Verbeet : vkd3d-shader: Properly handle scalar destinations in vkd3d_dxbc_compiler_emit_store().
by Alexandre Julliard
20 Aug '20
20 Aug '20
Module: vkd3d Branch: master Commit: a451af9c5194228e2228bcc685d2245a2014eadf URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=a451af9c5194228e2228bcc…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Thu Aug 20 23:57:44 2020 +0430 vkd3d-shader: Properly handle scalar destinations in vkd3d_dxbc_compiler_emit_store(). Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- libs/vkd3d-shader/spirv.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index ea696a2..c677963 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -3385,6 +3385,16 @@ static void vkd3d_dxbc_compiler_emit_store(struct vkd3d_dxbc_compiler *compiler, assert(write_mask); component_count = vkd3d_write_mask_component_count(write_mask); + dst_component_count = vkd3d_write_mask_component_count(dst_write_mask); + + if (dst_component_count == 1 && component_count != 1) + { + type_id = vkd3d_spirv_get_type_id(builder, component_type, 1); + val_id = vkd3d_spirv_build_op_composite_extract1(builder, type_id, val_id, + vkd3d_write_mask_get_component_idx(dst_write_mask)); + write_mask &= dst_write_mask; + component_count = 1; + } if (component_count == 1) { @@ -3392,7 +3402,6 @@ static void vkd3d_dxbc_compiler_emit_store(struct vkd3d_dxbc_compiler *compiler, dst_id, dst_write_mask, component_type, storage_class, write_mask, val_id); } - dst_component_count = vkd3d_write_mask_component_count(dst_write_mask); if (dst_component_count != component_count) { type_id = vkd3d_spirv_get_type_id(builder, component_type, dst_component_count);
1
0
0
0
Henri Verbeet : tests: Use descriptor ranges with multiple descriptors in test_register_space().
by Alexandre Julliard
20 Aug '20
20 Aug '20
Module: vkd3d Branch: master Commit: 106c76d45ea7e90d6e979c71c3bd45a42404111e URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=106c76d45ea7e90d6e979c7…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Thu Aug 20 23:57:43 2020 +0430 tests: Use descriptor ranges with multiple descriptors in test_register_space(). Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tests/d3d12.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/tests/d3d12.c b/tests/d3d12.c index ec7be9d..f0b2d54 100644 --- a/tests/d3d12.c +++ b/tests/d3d12.c @@ -32830,6 +32830,7 @@ static void test_register_space(void) D3D12_UNORDERED_ACCESS_VIEW_DESC uav_desc; D3D12_SHADER_RESOURCE_VIEW_DESC srv_desc; ID3D12GraphicsCommandList *command_list; + unsigned int descriptor_count; struct test_context context; ID3D12DescriptorHeap *heap; ID3D12CommandQueue *queue; @@ -32841,17 +32842,13 @@ static void test_register_space(void) static const D3D12_DESCRIPTOR_RANGE descriptor_ranges[] = { {D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 1, 2, 0}, - {D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 1, 1, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, - {D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 2, 1, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, - {D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 2, 2, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, + {D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 2, 1, 1, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, + {D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 2, 2, 2, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, {D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 3, 1, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, - {D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 3, 2, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 1, 1, 1, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, - {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 1, 1, 2, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, - {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 1, 2, 1, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, - {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 1, 2, 2, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, - {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 1, 3, 1, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, + {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 2, 1, 2, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, + {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 2, 2, 1, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 1, 3, 2, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 1, 3, 4, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, {D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 1, 3, 3, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND}, @@ -32949,6 +32946,7 @@ static void test_register_space(void) 0x060000b2, 0x00100012, 0x00000000, 0x0021e000, 0x00000007, 0x00000003, 0x060000b3, 0x00100012, 0x00000000, 0x0021e000, 0x00000006, 0x00000003, 0x0100003e, }; + static const uint32_t uav_data[] = {100, 200, 400, 300, 600, 500, 700, 800}; static const uint32_t srv_data[] = {100, 200, 300, 400, 500, 600}; if (!init_compute_test_context(&context)) @@ -32963,7 +32961,11 @@ static void test_register_space(void) hr = create_root_signature(device, &root_signature_desc, &context.root_signature); ok(hr == S_OK, "Failed to create root signature, hr %#x.\n", hr); - heap = create_gpu_descriptor_heap(device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, ARRAY_SIZE(descriptor_ranges)); + for (i = 0, descriptor_count = 0; i < ARRAY_SIZE(descriptor_ranges); ++i) + { + descriptor_count += descriptor_ranges[i].NumDescriptors; + } + heap = create_gpu_descriptor_heap(device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, descriptor_count); for (i = 0; i < ARRAY_SIZE(input_buffers); ++i) { @@ -33033,7 +33035,7 @@ static void test_register_space(void) { transition_sub_resource_state(command_list, output_buffers[i], 0, D3D12_RESOURCE_STATE_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_COPY_SOURCE); - check_buffer_uint(output_buffers[i], queue, command_list, (i + 1) * 100, 0); + check_buffer_uint(output_buffers[i], queue, command_list, uav_data[i], 0); reset_command_list(command_list, context.allocator); }
1
0
0
0
Henri Verbeet : vkd3d-shader: Introduce API for descriptor array bindings.
by Alexandre Julliard
20 Aug '20
20 Aug '20
Module: vkd3d Branch: master Commit: d2ffae5900c027af90470ea79a645cf4c92b23e2 URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=d2ffae5900c027af90470ea…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Thu Aug 20 23:57:42 2020 +0430 vkd3d-shader: Introduce API for descriptor array bindings. We will need this for shader model 5.1 resource arrays. However, for the time being any count other than '1' is unsupported. Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/vkd3d_shader.h | 1 + libs/vkd3d-shader/spirv.c | 47 ++++++++++++++++++++++++++++---- libs/vkd3d-shader/vkd3d_shader_private.h | 1 + libs/vkd3d/state.c | 3 ++ 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h index f437b24..1f2a9c2 100644 --- a/include/vkd3d_shader.h +++ b/include/vkd3d_shader.h @@ -100,6 +100,7 @@ struct vkd3d_shader_descriptor_binding { unsigned int set; unsigned int binding; + unsigned int count; /* This must be 1 in this version of vkd3d-shader. */ }; enum vkd3d_shader_binding_flag diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index 70bcf95..ea696a2 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -2424,11 +2424,26 @@ static struct vkd3d_shader_descriptor_binding vkd3d_dxbc_compiler_get_descriptor if (!vkd3d_dxbc_compiler_check_shader_visibility(compiler, current->shader_visibility)) continue; + if (current->register_space != register_space || current->register_index != reg_idx) + continue; + if (current->offset) + { FIXME("Atomic counter offsets are not supported yet.\n"); + vkd3d_dxbc_compiler_error(compiler, VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING, + "Descriptor binding for UAV counter %u, space %u has unsupported ‘offset’ %u.", + reg_idx, register_space, current->offset); + } - if (current->register_space == register_space && current->register_index == reg_idx) - return current->binding; + if (current->binding.count != 1) + { + FIXME("Descriptor arrays are not supported.\n"); + vkd3d_dxbc_compiler_error(compiler, VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING, + "Descriptor binding for UAV counter %u, space %u has unsupported ‘count’ %u.", + reg_idx, register_space, current->binding.count); + } + + return current->binding; } if (shader_interface->uav_counter_count) { @@ -2449,9 +2464,20 @@ static struct vkd3d_shader_descriptor_binding vkd3d_dxbc_compiler_get_descriptor if (!vkd3d_dxbc_compiler_check_shader_visibility(compiler, current->shader_visibility)) continue; - if (current->type == descriptor_type && current->register_space == register_space - && current->register_index == reg_idx) - return current->binding; + if (current->type != descriptor_type || current->register_space != register_space + || current->register_index != reg_idx) + continue; + + if (current->binding.count != 1) + { + FIXME("Descriptor arrays are not supported.\n"); + vkd3d_dxbc_compiler_error(compiler, VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING, + "Descriptor binding for type %#x, space %u, register %u, " + "shader type %#x has unsupported ‘count’ %u.", + descriptor_type, register_space, reg_idx, compiler->shader_type, current->binding.count); + } + + return current->binding; } if (shader_interface->binding_count) { @@ -2465,6 +2491,7 @@ static struct vkd3d_shader_descriptor_binding vkd3d_dxbc_compiler_get_descriptor done: binding.set = 0; + binding.count = 1; binding.binding = compiler->binding_idx++; return binding; } @@ -5327,6 +5354,16 @@ static void vkd3d_dxbc_compiler_emit_combined_sampler_declarations(struct vkd3d_ if (!vkd3d_dxbc_compiler_check_shader_visibility(compiler, current->shader_visibility)) continue; + if (current->binding.count != 1) + { + FIXME("Descriptor arrays are not supported.\n"); + vkd3d_dxbc_compiler_error(compiler, VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING, + "Combined descriptor binding for resource %u, space %u, " + "and sampler %u, space %u has unsupported ‘count’ %u.", + resource_index, resource_space, current->sampler_index, + current->sampler_space, current->binding.count); + } + d = vkd3d_dxbc_compiler_get_descriptor_info(compiler, VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER, current->sampler_space, current->sampler_index); depth = current->sampler_index != VKD3D_SHADER_DUMMY_SAMPLER_INDEX diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 51e1dd6..77b07e4 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -72,6 +72,7 @@ enum vkd3d_shader_error VKD3D_SHADER_ERROR_SPV_DESCRIPTOR_BINDING_NOT_FOUND = 2000, VKD3D_SHADER_ERROR_SPV_INVALID_REGISTER_TYPE = 2001, + VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING = 2002, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY = 3000, VKD3D_SHADER_ERROR_RS_INVALID_VERSION = 3001, diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c index a64d17f..81f3343 100644 --- a/libs/vkd3d/state.c +++ b/libs/vkd3d/state.c @@ -535,6 +535,7 @@ static void d3d12_root_signature_append_vk_binding(struct d3d12_root_signature * mapping->flags = buffer_descriptor ? VKD3D_SHADER_BINDING_FLAG_BUFFER : VKD3D_SHADER_BINDING_FLAG_IMAGE; mapping->binding.set = context->set_index; mapping->binding.binding = context->descriptor_binding++; + mapping->binding.count = 1; } static uint32_t d3d12_root_signature_assign_vk_bindings(struct d3d12_root_signature *root_signature, @@ -1478,6 +1479,7 @@ static HRESULT d3d12_pipeline_state_init_compute_uav_counters(struct d3d12_pipel state->uav_counters[j].shader_visibility = VKD3D_SHADER_VISIBILITY_COMPUTE; state->uav_counters[j].binding.set = context.set_index; state->uav_counters[j].binding.binding = context.descriptor_binding; + state->uav_counters[j].binding.count = 1; /* FIXME: For the graphics pipeline we have to take the shader * visibility into account. */ @@ -2954,6 +2956,7 @@ HRESULT vkd3d_uav_clear_state_init(struct vkd3d_uav_clear_state *state, struct d binding.shader_visibility = VKD3D_SHADER_VISIBILITY_COMPUTE; binding.binding.set = 0; binding.binding.binding = 0; + binding.binding.count = 1; push_constant_range.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT; push_constant_range.offset = 0;
1
0
0
0
Henri Verbeet : vkd3d-shader: Change the memory layout of swizzles to allow for future swizzle components.
by Alexandre Julliard
20 Aug '20
20 Aug '20
Module: vkd3d Branch: master Commit: 9efcf45d7a0c1954242c5fa4eb0dbe362eb44631 URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=9efcf45d7a0c1954242c5fa…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Thu Aug 20 23:57:41 2020 +0430 vkd3d-shader: Change the memory layout of swizzles to allow for future swizzle components. We may want to add e.g. VKD3D_SHADER_SWIZZLE_ONE and VKD3D_SHADER_SWIZZLE_ZERO in the future. Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/vkd3d_shader.h | 22 ++++++++++++++++------ libs/vkd3d-shader/dxbc.c | 9 +++++++-- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h index 1ece69d..f437b24 100644 --- a/include/vkd3d_shader.h +++ b/include/vkd3d_shader.h @@ -741,17 +741,27 @@ enum vkd3d_shader_swizzle_component VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SWIZZLE_COMPONENT), }; -#define VKD3D_SHADER_SWIZZLE_MASK (0x3u) -#define VKD3D_SHADER_SWIZZLE_SHIFT(idx) (2u * (idx)) +#define VKD3D_SHADER_SWIZZLE_MASK (0xffu) +#define VKD3D_SHADER_SWIZZLE_SHIFT(idx) (8u * (idx)) #define VKD3D_SHADER_SWIZZLE(x, y, z, w) \ - (((VKD3D_SHADER_SWIZZLE_ ## x) << VKD3D_SHADER_SWIZZLE_SHIFT(0)) \ - | ((VKD3D_SHADER_SWIZZLE_ ## y) << VKD3D_SHADER_SWIZZLE_SHIFT(1)) \ - | ((VKD3D_SHADER_SWIZZLE_ ## z) << VKD3D_SHADER_SWIZZLE_SHIFT(2)) \ - | ((VKD3D_SHADER_SWIZZLE_ ## w) << VKD3D_SHADER_SWIZZLE_SHIFT(3))) + vkd3d_shader_create_swizzle(VKD3D_SHADER_SWIZZLE_ ## x, \ + VKD3D_SHADER_SWIZZLE_ ## y, \ + VKD3D_SHADER_SWIZZLE_ ## z, \ + VKD3D_SHADER_SWIZZLE_ ## w) #define VKD3D_SHADER_NO_SWIZZLE VKD3D_SHADER_SWIZZLE(X, Y, Z, W) +static inline uint32_t vkd3d_shader_create_swizzle(enum vkd3d_shader_swizzle_component x, + enum vkd3d_shader_swizzle_component y, enum vkd3d_shader_swizzle_component z, + enum vkd3d_shader_swizzle_component w) +{ + return ((x & VKD3D_SHADER_SWIZZLE_MASK) << VKD3D_SHADER_SWIZZLE_SHIFT(0)) + | ((y & VKD3D_SHADER_SWIZZLE_MASK) << VKD3D_SHADER_SWIZZLE_SHIFT(1)) + | ((z & VKD3D_SHADER_SWIZZLE_MASK) << VKD3D_SHADER_SWIZZLE_SHIFT(2)) + | ((w & VKD3D_SHADER_SWIZZLE_MASK) << VKD3D_SHADER_SWIZZLE_SHIFT(3)); +} + #ifndef VKD3D_SHADER_NO_PROTOTYPES const char *vkd3d_shader_get_version(unsigned int *major, unsigned int *minor); diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index 89e3c0e..94e4621 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -1638,6 +1638,11 @@ static bool shader_sm4_is_scalar_register(const struct vkd3d_shader_register *re } } +static uint32_t swizzle_from_sm4(uint32_t s) +{ + return vkd3d_shader_create_swizzle(s & 0x3, (s >> 2) & 0x3, (s >> 4) & 0x3, (s >> 6) & 0x3); +} + static bool shader_sm4_read_src_param(struct vkd3d_sm4_data *priv, const DWORD **ptr, const DWORD *end, enum vkd3d_data_type data_type, struct vkd3d_shader_src_param *src_param) { @@ -1676,11 +1681,11 @@ static bool shader_sm4_read_src_param(struct vkd3d_sm4_data *priv, const DWORD * case VKD3D_SM4_SWIZZLE_SCALAR: src_param->swizzle = (token & VKD3D_SM4_SWIZZLE_MASK) >> VKD3D_SM4_SWIZZLE_SHIFT; - src_param->swizzle = (src_param->swizzle & 0x3) * 0x55; + src_param->swizzle = (src_param->swizzle & 0x3) * 0x01010101; break; case VKD3D_SM4_SWIZZLE_VEC4: - src_param->swizzle = (token & VKD3D_SM4_SWIZZLE_MASK) >> VKD3D_SM4_SWIZZLE_SHIFT; + src_param->swizzle = swizzle_from_sm4((token & VKD3D_SM4_SWIZZLE_MASK) >> VKD3D_SM4_SWIZZLE_SHIFT); break; default:
1
0
0
0
Biswapriyo Nath : include/xaudio2.idl: Use cpp_quote for xaudio2 error codes.
by Alexandre Julliard
19 Aug '20
19 Aug '20
Module: wine Branch: master Commit: 3076d37af8b91805945fd81f59c9a512cbcf8f73 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=3076d37af8b91805945fd81f…
Author: Biswapriyo Nath <nathbappai(a)gmail.com> Date: Thu Aug 13 11:05:49 2020 +0530 include/xaudio2.idl: Use cpp_quote for xaudio2 error codes. Signed-off-by: Biswapriyo Nath <nathbappai(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/xaudio2.idl | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/include/xaudio2.idl b/include/xaudio2.idl index 074454d490..3201e86e31 100644 --- a/include/xaudio2.idl +++ b/include/xaudio2.idl @@ -1243,15 +1243,16 @@ const UINT32 XAUDIO2_QUANTUM_NUMERATOR = 1; const UINT32 XAUDIO2_QUANTUM_DENOMINATOR = 100; const float XAUDIO2_QUANTUM_MS = (1000.0 * XAUDIO2_QUANTUM_NUMERATOR / XAUDIO2_QUANTUM_DENOMINATOR); -const HRESULT XAUDIO2_E_INVALID_CALL = 0x88960001; -const HRESULT XAUDIO2_E_XMA_DECODER_ERROR = 0x88960002; -const HRESULT XAUDIO2_E_XAPO_CREATION_FAILED = 0x88960003; -const HRESULT XAUDIO2_E_DEVICE_INVALIDATED = 0x88960004; +/* use cpp_quote to retain the HRESULT type in header file */ +cpp_quote("#define XAUDIO2_E_INVALID_CALL ((HRESULT)0x88960001)") +cpp_quote("#define XAUDIO2_E_XMA_DECODER_ERROR ((HRESULT)0x88960002)") +cpp_quote("#define XAUDIO2_E_XAPO_CREATION_FAILED ((HRESULT)0x88960003)") +cpp_quote("#define XAUDIO2_E_DEVICE_INVALIDATED ((HRESULT)0x88960004)") /* xaudio 2.0 error codes */ -const HRESULT XAUDIO20_E_XMA_DECODER_ERROR = 0x88960001; -const HRESULT XAUDIO20_E_XAPO_CREATION_FAILED = 0x88960002; -const HRESULT XAUDIO20_E_DEVICE_INVALIDATED = 0x88960003; +cpp_quote("#define XAUDIO20_E_XMA_DECODER_ERROR ((HRESULT)0x88960001)") +cpp_quote("#define XAUDIO20_E_XAPO_CREATION_FAILED ((HRESULT)0x88960002)") +cpp_quote("#define XAUDIO20_E_DEVICE_INVALIDATED ((HRESULT)0x88960003)") cpp_quote("#ifdef XAUDIO2_HELPER_FUNCTIONS") cpp_quote("#define _USE_MATH_DEFINES")
1
0
0
0
Zebediah Figura : xactengine3: Reduce code duplication in xact_classes.idl.
by Alexandre Julliard
19 Aug '20
19 Aug '20
Module: wine Branch: master Commit: 4ee67e19960b8f05f2ed98cf359fd9231491d057 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4ee67e19960b8f05f2ed98cf…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Thu Aug 13 17:18:39 2020 -0500 xactengine3: Reduce code duplication in xact_classes.idl. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/xactengine3_7/xact_classes.idl | 42 +++---------------------------------- 1 file changed, 3 insertions(+), 39 deletions(-) diff --git a/dlls/xactengine3_7/xact_classes.idl b/dlls/xactengine3_7/xact_classes.idl index 2ed8d337ac..40c00f4ff0 100644 --- a/dlls/xactengine3_7/xact_classes.idl +++ b/dlls/xactengine3_7/xact_classes.idl @@ -20,60 +20,24 @@ #pragma makedep register -#if XACT3_VER == 0x0300 [ - helpstring("XACT3.0 Class"), threading(both), +#if XACT3_VER == 0x0300 uuid(3b80ee2a-b0f5-4780-9e30-90cb39685b03) -] -coclass XACTEngine30 { interface IXACT30Engine; } #elif XACT3_VER == 0x0301 -[ - helpstring("XACT3.1 Class"), - threading(both), uuid(962f5027-99be-4692-a468-85802cf8de61) -] -coclass XACTEngine31 { interface IXACT32Engine; } #elif XACT3_VER == 0x0302 -[ - helpstring("XACT3.2 Class"), - threading(both), uuid(d3332f02-3dd0-4de9-9aec-20d85c4111b6) -] -coclass XACTEngine32 { interface IXACT32Engine; } #elif XACT3_VER == 0x0303 -[ - helpstring("XACT3.3 Class"), - threading(both), uuid(94c1affa-66e7-4961-9521-cfdef3128d4f) -] -coclass XACTEngine33 { interface IXACT37Engine; } #elif XACT3_VER == 0x0304 -[ - helpstring("XACT3.4 Class"), - threading(both), uuid(0977d092-2d95-4e43-8d42-9ddcc2545ed5) -] -coclass XACTEngine34 { interface IXACT37Engine; } #elif XACT3_VER == 0x0305 -[ - helpstring("XACT3.5 Class"), - threading(both), uuid(074b110f-7f58-4743-aea5-12f15b5074ed) -] -coclass XACTEngine35 { interface IXACT37Engine; } #elif XACT3_VER == 0x0306 -[ - helpstring("XACT3.6 Class"), - threading(both), uuid(248d8a3b-6256-44d3-a018-2ac96c459f47) -] -coclass XACTEngine36 { interface IXACT37Engine; } #else /* XACT3_VER == 0x0307 or not defined */ -[ - helpstring("XACT3.7 Class"), - threading(both), uuid(bcc782bc-6492-4c22-8c35-f5d72fe73c6e) -] -coclass XACTEngine37 { interface IXACT37Engine; } #endif +] +coclass XACTEngine {}
1
0
0
0
Nikolay Sivov : combase: Move CoRegisterMessageFilter().
by Alexandre Julliard
19 Aug '20
19 Aug '20
Module: wine Branch: master Commit: 00f9dff02df4f27866908f28213a79b2c259d727 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=00f9dff02df4f27866908f28…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Wed Aug 19 11:29:13 2020 +0300 combase: Move CoRegisterMessageFilter(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/combase/combase.c | 37 +++++++++++++++++++++++++++++ dlls/combase/combase.spec | 2 +- dlls/ole32/compobj.c | 59 ----------------------------------------------- dlls/ole32/ole32.spec | 2 +- 4 files changed, 39 insertions(+), 61 deletions(-) diff --git a/dlls/combase/combase.c b/dlls/combase/combase.c index 88dc7aa7b1..96c6a9bb81 100644 --- a/dlls/combase/combase.c +++ b/dlls/combase/combase.c @@ -1684,3 +1684,40 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD flags, DWORD timeout, ULONG handle return hr; } + +/****************************************************************************** + * CoRegisterMessageFilter (combase.@) + */ +HRESULT WINAPI CoRegisterMessageFilter(IMessageFilter *filter, IMessageFilter **ret_filter) +{ + IMessageFilter *old_filter; + struct apartment *apt; + + TRACE("%p, %p\n", filter, ret_filter); + + apt = com_get_current_apt(); + + /* Can't set a message filter in a multi-threaded apartment */ + if (!apt || apt->multi_threaded) + { + WARN("Can't set message filter in MTA or uninitialized apt\n"); + return CO_E_NOT_SUPPORTED; + } + + if (filter) + IMessageFilter_AddRef(filter); + + EnterCriticalSection(&apt->cs); + + old_filter = apt->filter; + apt->filter = filter; + + LeaveCriticalSection(&apt->cs); + + if (ret_filter) + *ret_filter = old_filter; + else if (old_filter) + IMessageFilter_Release(old_filter); + + return S_OK; +} diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec index 7fd1e964cd..bb7eaf69f9 100644 --- a/dlls/combase/combase.spec +++ b/dlls/combase/combase.spec @@ -142,7 +142,7 @@ @ stdcall CoRegisterClassObject(ptr ptr long long ptr) ole32.CoRegisterClassObject @ stdcall CoRegisterInitializeSpy(ptr ptr) @ stdcall CoRegisterMallocSpy(ptr) -@ stdcall CoRegisterMessageFilter(ptr ptr) ole32.CoRegisterMessageFilter +@ stdcall CoRegisterMessageFilter(ptr ptr) @ stdcall CoRegisterPSClsid(ptr ptr) ole32.CoRegisterPSClsid @ stdcall CoRegisterSurrogate(ptr) ole32.CoRegisterSurrogate @ stdcall CoRegisterSurrogateEx(ptr ptr) ole32.CoRegisterSurrogateEx diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c index 574a7b3305..f02cdb8b53 100644 --- a/dlls/ole32/compobj.c +++ b/dlls/ole32/compobj.c @@ -3146,65 +3146,6 @@ HRESULT WINAPI CoGetCurrentLogicalThreadId(GUID *id) return S_OK; } -/****************************************************************************** - * CoRegisterMessageFilter [OLE32.@] - * - * Registers a message filter. - * - * PARAMS - * lpMessageFilter [I] Pointer to interface. - * lplpMessageFilter [O] Indirect pointer to prior instance if non-NULL. - * - * RETURNS - * Success: S_OK. - * Failure: HRESULT code. - * - * NOTES - * Both lpMessageFilter and lplpMessageFilter are optional. Passing in a NULL - * lpMessageFilter removes the message filter. - * - * If lplpMessageFilter is not NULL the previous message filter will be - * returned in the memory pointer to this parameter and the caller is - * responsible for releasing the object. - * - * The current thread be in an apartment otherwise the function will crash. - */ -HRESULT WINAPI CoRegisterMessageFilter( - LPMESSAGEFILTER lpMessageFilter, - LPMESSAGEFILTER *lplpMessageFilter) -{ - struct apartment *apt; - IMessageFilter *lpOldMessageFilter; - - TRACE("(%p, %p)\n", lpMessageFilter, lplpMessageFilter); - - apt = COM_CurrentApt(); - - /* can't set a message filter in a multi-threaded apartment */ - if (!apt || apt->multi_threaded) - { - WARN("can't set message filter in MTA or uninitialized apt\n"); - return CO_E_NOT_SUPPORTED; - } - - if (lpMessageFilter) - IMessageFilter_AddRef(lpMessageFilter); - - EnterCriticalSection(&apt->cs); - - lpOldMessageFilter = apt->filter; - apt->filter = lpMessageFilter; - - LeaveCriticalSection(&apt->cs); - - if (lplpMessageFilter) - *lplpMessageFilter = lpOldMessageFilter; - else if (lpOldMessageFilter) - IMessageFilter_Release(lpOldMessageFilter); - - return S_OK; -} - /*********************************************************************** * CoIsOle1Class [OLE32.@] * diff --git a/dlls/ole32/ole32.spec b/dlls/ole32/ole32.spec index afb0e10407..ed5a958ce3 100644 --- a/dlls/ole32/ole32.spec +++ b/dlls/ole32/ole32.spec @@ -68,7 +68,7 @@ @ stdcall CoRegisterClassObject(ptr ptr long long ptr) @ stdcall CoRegisterInitializeSpy(ptr ptr) combase.CoRegisterInitializeSpy @ stdcall CoRegisterMallocSpy(ptr) combase.CoRegisterMallocSpy -@ stdcall CoRegisterMessageFilter(ptr ptr) +@ stdcall CoRegisterMessageFilter(ptr ptr) combase.CoRegisterMessageFilter @ stdcall CoRegisterPSClsid(ptr ptr) @ stdcall CoRegisterSurrogate(ptr) @ stdcall CoRegisterSurrogateEx(ptr ptr)
1
0
0
0
← Newer
1
...
20
21
22
23
24
25
26
...
70
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Results per page:
10
25
50
100
200