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
April 2018
----- 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
542 discussions
Start a n
N
ew thread
Hans Leidekker : kernel32: Implement GetNamedPipeClient/ServerProcessId.
by Alexandre Julliard
11 Apr '18
11 Apr '18
Module: wine Branch: master Commit: dedd4506891a044ae9cd34df1e10c146460af036 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=dedd4506891a044ae9cd34df…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Wed Apr 11 14:32:56 2018 +0200 kernel32: Implement GetNamedPipeClient/ServerProcessId. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-core-kernel32-legacy-l1-1-0.spec | 4 +- .../api-ms-win-core-kernel32-legacy-l1-1-1.spec | 4 +- dlls/kernel32/kernel32.spec | 4 +- dlls/kernel32/sync.c | 40 +++++ dlls/kernel32/tests/pipe.c | 189 ++++++++++++++++++++- include/winbase.h | 5 +- include/winioctl.h | 1 + server/named_pipe.c | 42 +++++ 8 files changed, 277 insertions(+), 12 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=dedd4506891a044ae9cd…
1
0
0
0
Hans Leidekker : kernel32/tests: Fix typos.
by Alexandre Julliard
11 Apr '18
11 Apr '18
Module: wine Branch: master Commit: d0671ed7b965dc01b204d03b0b820a0fa939c2f3 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=d0671ed7b965dc01b204d03b…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Wed Apr 11 12:08:08 2018 +0200 kernel32/tests: Fix typos. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernel32/tests/pipe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c index fa677cf..72928ff 100644 --- a/dlls/kernel32/tests/pipe.c +++ b/dlls/kernel32/tests/pipe.c @@ -3086,7 +3086,7 @@ static void create_overlapped_pipe(DWORD mode, HANDLE *client, HANDLE *server) *server = CreateNamedPipeA(PIPENAME, FILE_FLAG_OVERLAPPED | PIPE_ACCESS_DUPLEX, PIPE_WAIT | mode, 1, 5000, 6000, NMPWAIT_USE_DEFAULT_WAIT, NULL); - ok(&server != INVALID_HANDLE_VALUE, "CreateNamedPipe failed: %u\n", GetLastError()); + ok(*server != INVALID_HANDLE_VALUE, "CreateNamedPipe failed: %u\n", GetLastError()); test_signaled(*server); memset(&overlapped, 0, sizeof(overlapped)); @@ -3097,7 +3097,7 @@ static void create_overlapped_pipe(DWORD mode, HANDLE *client, HANDLE *server) test_not_signaled(overlapped.hEvent); *client = CreateFileA(PIPENAME, GENERIC_READ | GENERIC_WRITE, 0, &sec_attr, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); - ok(*server != INVALID_HANDLE_VALUE, "CreateFile failed: %u\n", GetLastError()); + ok(*client != INVALID_HANDLE_VALUE, "CreateFile failed: %u\n", GetLastError()); res = SetNamedPipeHandleState(*client, &read_mode, NULL, NULL); ok(res, "SetNamedPipeHandleState failed: %u\n", GetLastError());
1
0
0
0
Alexandre Julliard : user32/tests: Add tests for GetDpiForSystem().
by Alexandre Julliard
11 Apr '18
11 Apr '18
Module: wine Branch: master Commit: 9d5e33b7413944994c3dbb862eb37309f8b73ee7 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9d5e33b7413944994c3dbb86…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 11 16:01:28 2018 +0200 user32/tests: Add tests for GetDpiForSystem(). Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/user32/tests/sysparams.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c index d4e315f..5b185b9 100644 --- a/dlls/user32/tests/sysparams.c +++ b/dlls/user32/tests/sysparams.c @@ -44,6 +44,7 @@ static BOOL (WINAPI *pSetProcessDPIAware)(void); static BOOL (WINAPI *pSetProcessDpiAwarenessContext)(DPI_AWARENESS_CONTEXT); static BOOL (WINAPI *pGetProcessDpiAwarenessInternal)(HANDLE,DPI_AWARENESS*); static BOOL (WINAPI *pSetProcessDpiAwarenessInternal)(DPI_AWARENESS); +static UINT (WINAPI *pGetDpiForSystem)(void); static DPI_AWARENESS_CONTEXT (WINAPI *pGetThreadDpiAwarenessContext)(void); static DPI_AWARENESS_CONTEXT (WINAPI *pSetThreadDpiAwarenessContext)(DPI_AWARENESS_CONTEXT); static DPI_AWARENESS_CONTEXT (WINAPI *pGetWindowDpiAwarenessContext)(HWND); @@ -198,6 +199,13 @@ static DWORD get_real_dpi(void) { DWORD dpi; + if (pSetThreadDpiAwarenessContext) + { + DPI_AWARENESS_CONTEXT context = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ); + dpi = pGetDpiForSystem(); + pSetThreadDpiAwarenessContext( context ); + return dpi; + } if (get_reg_dword(HKEY_CURRENT_USER, "Control Panel\\Desktop", "LogPixels", &dpi)) return dpi; if (get_reg_dword(HKEY_CURRENT_CONFIG, "Software\\Fonts", "LogPixels", &dpi)) @@ -3008,6 +3016,8 @@ static void test_dpi_aware(void) DPI_AWARENESS awareness; DPI_AWARENESS_CONTEXT context; ULONG_PTR i; + UINT dpi; + HDC hdc = GetDC( 0 ); context = pGetThreadDpiAwarenessContext(); todo_wine @@ -3017,6 +3027,12 @@ static void test_dpi_aware(void) ok( awareness == DPI_AWARENESS_UNAWARE, "wrong awareness %u\n", awareness ); todo_wine ok( !pIsProcessDPIAware(), "already aware\n" ); + dpi = pGetDpiForSystem(); + todo_wine_if (real_dpi != USER_DEFAULT_SCREEN_DPI) + ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi ); + dpi = GetDeviceCaps( hdc, LOGPIXELSX ); + todo_wine_if (real_dpi != USER_DEFAULT_SCREEN_DPI) + ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi ); SetLastError( 0xdeadbeef ); ret = pSetProcessDpiAwarenessContext( NULL ); ok( !ret, "got %d\n", ret ); @@ -3028,6 +3044,7 @@ static void test_dpi_aware(void) ret = pSetProcessDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ); ok( ret, "got %d\n", ret ); ok( pIsProcessDPIAware(), "not aware\n" ); + real_dpi = pGetDpiForSystem(); SetLastError( 0xdeadbeef ); ret = pSetProcessDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ); ok( !ret, "got %d\n", ret ); @@ -3071,6 +3088,11 @@ static void test_dpi_aware(void) ok( context == (DPI_AWARENESS_CONTEXT)0x80000011, "wrong context %p\n", context ); awareness = pGetAwarenessFromDpiAwarenessContext( context ); ok( awareness == DPI_AWARENESS_SYSTEM_AWARE, "wrong awareness %u\n", awareness ); + dpi = pGetDpiForSystem(); + ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi ); + dpi = GetDeviceCaps( hdc, LOGPIXELSX ); + todo_wine_if (real_dpi != USER_DEFAULT_SCREEN_DPI) + ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi ); ok( !pIsProcessDPIAware(), "still aware\n" ); context = pGetThreadDpiAwarenessContext(); ok( context == (DPI_AWARENESS_CONTEXT)0x10, "wrong context %p\n", context ); @@ -3080,6 +3102,10 @@ static void test_dpi_aware(void) ok( context == (DPI_AWARENESS_CONTEXT)0x10, "wrong context %p\n", context ); awareness = pGetAwarenessFromDpiAwarenessContext( context ); ok( awareness == DPI_AWARENESS_UNAWARE, "wrong awareness %u\n", awareness ); + dpi = pGetDpiForSystem(); + ok( dpi == real_dpi, "wrong dpi %u/%u\n", dpi, real_dpi ); + dpi = GetDeviceCaps( hdc, LOGPIXELSX ); + ok( dpi == real_dpi, "wrong dpi %u\n", dpi ); context = pGetThreadDpiAwarenessContext(); ok( context == (DPI_AWARENESS_CONTEXT)0x12, "wrong context %p\n", context ); awareness = pGetAwarenessFromDpiAwarenessContext( context ); @@ -3088,6 +3114,10 @@ static void test_dpi_aware(void) ok( context == (DPI_AWARENESS_CONTEXT)0x12, "wrong context %p\n", context ); awareness = pGetAwarenessFromDpiAwarenessContext( context ); ok( awareness == DPI_AWARENESS_PER_MONITOR_AWARE, "wrong awareness %u\n", awareness ); + dpi = pGetDpiForSystem(); + ok( dpi == real_dpi, "wrong dpi %u/%u\n", dpi, real_dpi ); + dpi = GetDeviceCaps( hdc, LOGPIXELSX ); + ok( dpi == real_dpi, "wrong dpi %u\n", dpi ); ok( pIsProcessDPIAware(), "not aware\n" ); context = pGetThreadDpiAwarenessContext(); ok( context == (DPI_AWARENESS_CONTEXT)0x11, "wrong context %p\n", context ); @@ -3152,6 +3182,7 @@ static void test_dpi_aware(void) break; } } + ReleaseDC( 0, hdc ); } else win_skip( "SetProcessDpiAwarenessContext not supported\n" ); @@ -3161,6 +3192,7 @@ static void test_dpi_aware(void) ret = pIsProcessDPIAware(); ok(ret, "got %d\n", ret); + if (pGetDpiForSystem) real_dpi = pGetDpiForSystem(); dpi = real_dpi; test_GetSystemMetrics(); } @@ -3236,6 +3268,7 @@ START_TEST(sysparams) pChangeDisplaySettingsExA = (void*)GetProcAddress(hdll, "ChangeDisplaySettingsExA"); pIsProcessDPIAware = (void*)GetProcAddress(hdll, "IsProcessDPIAware"); pSetProcessDPIAware = (void*)GetProcAddress(hdll, "SetProcessDPIAware"); + pGetDpiForSystem = (void*)GetProcAddress(hdll, "GetDpiForSystem"); pSetProcessDpiAwarenessContext = (void*)GetProcAddress(hdll, "SetProcessDpiAwarenessContext"); pGetProcessDpiAwarenessInternal = (void*)GetProcAddress(hdll, "GetProcessDpiAwarenessInternal"); pSetProcessDpiAwarenessInternal = (void*)GetProcAddress(hdll, "SetProcessDpiAwarenessInternal");
1
0
0
0
Alexandre Julliard : shcore: Implement Get/SetProcessDpiAwareness().
by Alexandre Julliard
11 Apr '18
11 Apr '18
Module: wine Branch: master Commit: 7a7dd5005c4d3b9c194e6266e735dd36720fde4d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7a7dd5005c4d3b9c194e6266…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 11 15:46:06 2018 +0200 shcore: Implement Get/SetProcessDpiAwareness(). Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/shcore/main.c | 9 ++++----- include/shellscalingapi.h | 4 ++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/dlls/shcore/main.c b/dlls/shcore/main.c index 739e3ff..17d4b68 100644 --- a/dlls/shcore/main.c +++ b/dlls/shcore/main.c @@ -46,15 +46,14 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved) HRESULT WINAPI GetProcessDpiAwareness(HANDLE process, PROCESS_DPI_AWARENESS *value) { - FIXME("(%p, %p): stub\n", process, value); - if (value) *value = PROCESS_DPI_UNAWARE; - return S_OK; + if (GetProcessDpiAwarenessInternal( process, (DPI_AWARENESS *)value )) return S_OK; + return HRESULT_FROM_WIN32( GetLastError() ); } HRESULT WINAPI SetProcessDpiAwareness(PROCESS_DPI_AWARENESS value) { - FIXME("(%u): stub\n", value); - return E_NOTIMPL; + if (SetProcessDpiAwarenessInternal( value )) return S_OK; + return HRESULT_FROM_WIN32( GetLastError() ); } HRESULT WINAPI GetDpiForMonitor(HMONITOR monitor, MONITOR_DPI_TYPE type, UINT *x, UINT *y) diff --git a/include/shellscalingapi.h b/include/shellscalingapi.h index fb49a30..1df85d5 100644 --- a/include/shellscalingapi.h +++ b/include/shellscalingapi.h @@ -34,4 +34,8 @@ typedef enum PROCESS_DPI_AWARENESS PROCESS_PER_MONITOR_DPI_AWARE } PROCESS_DPI_AWARENESS; +HRESULT WINAPI GetDpiForMonitor(HMONITOR,MONITOR_DPI_TYPE,UINT*,UINT*); +HRESULT WINAPI GetProcessDpiAwareness(HANDLE,PROCESS_DPI_AWARENESS*); +HRESULT WINAPI SetProcessDpiAwareness(PROCESS_DPI_AWARENESS); + #endif /* __WINE_SHELLSCALINGAPI_H */
1
0
0
0
Alexandre Julliard : user32: Support returning to the process default in SetThreadDpiAwarenessContext( ).
by Alexandre Julliard
11 Apr '18
11 Apr '18
Module: wine Branch: master Commit: da2551f874f385a9f4e40e6d0d152528279a4b4b URL:
https://source.winehq.org/git/wine.git/?a=commit;h=da2551f874f385a9f4e40e6d…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 11 15:55:38 2018 +0200 user32: Support returning to the process default in SetThreadDpiAwarenessContext(). Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/user32/sysparams.c | 38 ++++++++++++++++++++++++-------------- dlls/user32/tests/sysparams.c | 31 ++++++++++++++++++++++++++++++- dlls/user32/user_private.h | 2 +- 3 files changed, 55 insertions(+), 16 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=da2551f874f385a9f4e4…
1
0
0
0
Alexandre Julliard : user32: Add more allowed values in GetAwarenessFromDpiAwarenessContext() and IsValidDpiAwarenessContext().
by Alexandre Julliard
11 Apr '18
11 Apr '18
Module: wine Branch: master Commit: 165f552c34a0dbbd1a47a4409f43ceb80468937e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=165f552c34a0dbbd1a47a440…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 11 15:52:11 2018 +0200 user32: Add more allowed values in GetAwarenessFromDpiAwarenessContext() and IsValidDpiAwarenessContext(). Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/user32/sysparams.c | 31 +++++++++++++++++---------- dlls/user32/tests/sysparams.c | 50 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 11 deletions(-) diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c index 8b6ea50..5d57b5d 100644 --- a/dlls/user32/sysparams.c +++ b/dlls/user32/sysparams.c @@ -2999,8 +2999,9 @@ BOOL WINAPI SetProcessDpiAwarenessInternal( DPI_AWARENESS awareness ) */ BOOL WINAPI AreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT ctx1, DPI_AWARENESS_CONTEXT ctx2 ) { - if (!IsValidDpiAwarenessContext( ctx1 )) return FALSE; - return ctx1 == ctx2; + DPI_AWARENESS aware1 = GetAwarenessFromDpiAwarenessContext( ctx1 ); + DPI_AWARENESS aware2 = GetAwarenessFromDpiAwarenessContext( ctx2 ); + return aware1 != DPI_AWARENESS_INVALID && aware1 == aware2; } /*********************************************************************** @@ -3008,11 +3009,22 @@ BOOL WINAPI AreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT ctx1, DPI_AWAREN */ DPI_AWARENESS WINAPI GetAwarenessFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT context ) { - if (context == DPI_AWARENESS_CONTEXT_UNAWARE) return DPI_AWARENESS_UNAWARE; - if (context == DPI_AWARENESS_CONTEXT_SYSTEM_AWARE) return DPI_AWARENESS_SYSTEM_AWARE; - if (context == DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE) return DPI_AWARENESS_PER_MONITOR_AWARE; - if (context == DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2) return DPI_AWARENESS_PER_MONITOR_AWARE; - return DPI_AWARENESS_INVALID; + switch ((ULONG_PTR)context) + { + case 0x10: + case 0x11: + case 0x12: + case 0x80000010: + case 0x80000011: + case 0x80000012: + return (ULONG_PTR)context & 3; + case (ULONG_PTR)DPI_AWARENESS_CONTEXT_UNAWARE: + case (ULONG_PTR)DPI_AWARENESS_CONTEXT_SYSTEM_AWARE: + case (ULONG_PTR)DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE: + return ~(ULONG_PTR)context; + default: + return DPI_AWARENESS_INVALID; + } } /*********************************************************************** @@ -3020,10 +3032,7 @@ DPI_AWARENESS WINAPI GetAwarenessFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT */ BOOL WINAPI IsValidDpiAwarenessContext( DPI_AWARENESS_CONTEXT context ) { - return (context == DPI_AWARENESS_CONTEXT_UNAWARE || - context == DPI_AWARENESS_CONTEXT_SYSTEM_AWARE || - context == DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE || - context == DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2); + return GetAwarenessFromDpiAwarenessContext( context ) != DPI_AWARENESS_INVALID; } /*********************************************************************** diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c index e132992..75a5f87 100644 --- a/dlls/user32/tests/sysparams.c +++ b/dlls/user32/tests/sysparams.c @@ -48,6 +48,7 @@ static DPI_AWARENESS_CONTEXT (WINAPI *pGetThreadDpiAwarenessContext)(void); static DPI_AWARENESS_CONTEXT (WINAPI *pSetThreadDpiAwarenessContext)(DPI_AWARENESS_CONTEXT); static DPI_AWARENESS_CONTEXT (WINAPI *pGetWindowDpiAwarenessContext)(HWND); static DPI_AWARENESS (WINAPI *pGetAwarenessFromDpiAwarenessContext)(DPI_AWARENESS_CONTEXT); +static BOOL (WINAPI *pIsValidDpiAwarenessContext)(DPI_AWARENESS_CONTEXT); static BOOL strict; static int dpi, real_dpi; @@ -3006,6 +3007,7 @@ static void test_dpi_aware(void) { DPI_AWARENESS awareness; DPI_AWARENESS_CONTEXT context; + ULONG_PTR i; context = pGetThreadDpiAwarenessContext(); awareness = pGetAwarenessFromDpiAwarenessContext( context ); @@ -3074,6 +3076,53 @@ static void test_dpi_aware(void) context = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ); awareness = pGetAwarenessFromDpiAwarenessContext( context ); ok( awareness == DPI_AWARENESS_PER_MONITOR_AWARE, "wrong awareness %u\n", awareness ); + for (i = 0; i < 0x100; i++) + { + awareness = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)i ); + switch (i) + { + case 0x10: + case 0x11: + case 0x12: + ok( awareness == (i & ~0x10), "%lx: wrong value %u\n", i, awareness ); + ok( pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)i ), "%lx: not valid\n", i ); + break; + default: + ok( awareness == DPI_AWARENESS_INVALID, "%lx: wrong value %u\n", i, awareness ); + ok( !pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)i ), "%lx: valid\n", i ); + break; + } + awareness = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)(i | 0x80000000) ); + switch (i) + { + case 0x10: + case 0x11: + case 0x12: + ok( awareness == (i & ~0x10), "%lx: wrong value %u\n", i | 0x80000000, awareness ); + ok( pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)(i | 0x80000000) ), + "%lx: not valid\n", i | 0x80000000 ); + break; + default: + ok( awareness == DPI_AWARENESS_INVALID, "%lx: wrong value %u\n", i | 0x80000000, awareness ); + ok( !pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)(i | 0x80000000) ), + "%lx: valid\n", i | 0x80000000 ); + break; + } + awareness = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~i ); + switch (~i) + { + case (ULONG_PTR)DPI_AWARENESS_CONTEXT_UNAWARE: + case (ULONG_PTR)DPI_AWARENESS_CONTEXT_SYSTEM_AWARE: + case (ULONG_PTR)DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE: + ok( awareness == i, "%lx: wrong value %u\n", ~i, awareness ); + ok( pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~i ), "%lx: not valid\n", ~i ); + break; + default: + ok( awareness == DPI_AWARENESS_INVALID, "%lx: wrong value %u\n", ~i, awareness ); + ok( !pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~i ), "%lx: valid\n", ~i ); + break; + } + } } else win_skip( "SetProcessDPIAware not supported\n" ); @@ -3165,6 +3214,7 @@ START_TEST(sysparams) pSetThreadDpiAwarenessContext = (void*)GetProcAddress(hdll, "SetThreadDpiAwarenessContext"); pGetWindowDpiAwarenessContext = (void*)GetProcAddress(hdll, "GetWindowDpiAwarenessContext"); pGetAwarenessFromDpiAwarenessContext = (void*)GetProcAddress(hdll, "GetAwarenessFromDpiAwarenessContext"); + pIsValidDpiAwarenessContext = (void*)GetProcAddress(hdll, "IsValidDpiAwarenessContext"); hInstance = GetModuleHandleA( NULL ); hdc = GetDC(0);
1
0
0
0
Alexandre Julliard : user32: Implement Get/SetProcessDpiAwarenessInternal( ).
by Alexandre Julliard
11 Apr '18
11 Apr '18
Module: wine Branch: master Commit: 9fa96f54335b0dfa7921f15cf12e42e40a4014d3 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9fa96f54335b0dfa7921f15c…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 11 15:45:33 2018 +0200 user32: Implement Get/SetProcessDpiAwarenessInternal(). Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../ext-ms-win-rtcore-ntuser-dpi-l1-1-0.spec | 4 +-- dlls/user32/sysparams.c | 31 ++++++++++++++++++++++ dlls/user32/tests/sysparams.c | 21 +++++++++++++++ dlls/user32/user32.spec | 2 ++ include/winuser.h | 2 ++ 5 files changed, 58 insertions(+), 2 deletions(-) diff --git a/dlls/ext-ms-win-rtcore-ntuser-dpi-l1-1-0/ext-ms-win-rtcore-ntuser-dpi-l1-1-0.spec b/dlls/ext-ms-win-rtcore-ntuser-dpi-l1-1-0/ext-ms-win-rtcore-ntuser-dpi-l1-1-0.spec index 63cecb4..ca1fe1c 100644 --- a/dlls/ext-ms-win-rtcore-ntuser-dpi-l1-1-0/ext-ms-win-rtcore-ntuser-dpi-l1-1-0.spec +++ b/dlls/ext-ms-win-rtcore-ntuser-dpi-l1-1-0/ext-ms-win-rtcore-ntuser-dpi-l1-1-0.spec @@ -1,3 +1,3 @@ @ stub GetDpiForMonitorInternal -@ stub GetProcessDpiAwarenessInternal -@ stub SetProcessDpiAwarenessInternal +@ stdcall GetProcessDpiAwarenessInternal(long ptr) user32.GetProcessDpiAwarenessInternal +@ stdcall SetProcessDpiAwarenessInternal(long) user32.SetProcessDpiAwarenessInternal diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c index a018dfc..8b6ea50 100644 --- a/dlls/user32/sysparams.c +++ b/dlls/user32/sysparams.c @@ -2963,6 +2963,37 @@ BOOL WINAPI SetProcessDpiAwarenessContext( DPI_AWARENESS_CONTEXT context ) return TRUE; } +/********************************************************************** + * GetProcessDpiAwarenessInternal (USER32.@) + */ +BOOL WINAPI GetProcessDpiAwarenessInternal( HANDLE process, DPI_AWARENESS *awareness ) +{ + if (process && process != GetCurrentProcess()) + { + WARN( "not supported on other process %p\n", process ); + *awareness = DPI_AWARENESS_UNAWARE; + } + else *awareness = GetAwarenessFromDpiAwarenessContext( dpi_awareness ); + return TRUE; +} + +/********************************************************************** + * SetProcessDpiAwarenessInternal (USER32.@) + */ +BOOL WINAPI SetProcessDpiAwarenessInternal( DPI_AWARENESS awareness ) +{ + static const DPI_AWARENESS_CONTEXT contexts[3] = { DPI_AWARENESS_CONTEXT_UNAWARE, + DPI_AWARENESS_CONTEXT_SYSTEM_AWARE, + DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE }; + + if (awareness < DPI_AWARENESS_UNAWARE || awareness > DPI_AWARENESS_PER_MONITOR_AWARE) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + return SetProcessDpiAwarenessContext( contexts[awareness] ); +} + /*********************************************************************** * AreDpiAwarenessContextsEqual (USER32.@) */ diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c index 5c27248..e132992 100644 --- a/dlls/user32/tests/sysparams.c +++ b/dlls/user32/tests/sysparams.c @@ -42,6 +42,8 @@ static LONG (WINAPI *pChangeDisplaySettingsExA)(LPCSTR, LPDEVMODEA, HWND, DWORD, static BOOL (WINAPI *pIsProcessDPIAware)(void); static BOOL (WINAPI *pSetProcessDPIAware)(void); static BOOL (WINAPI *pSetProcessDpiAwarenessContext)(DPI_AWARENESS_CONTEXT); +static BOOL (WINAPI *pGetProcessDpiAwarenessInternal)(HANDLE,DPI_AWARENESS*); +static BOOL (WINAPI *pSetProcessDpiAwarenessInternal)(DPI_AWARENESS); static DPI_AWARENESS_CONTEXT (WINAPI *pGetThreadDpiAwarenessContext)(void); static DPI_AWARENESS_CONTEXT (WINAPI *pSetThreadDpiAwarenessContext)(DPI_AWARENESS_CONTEXT); static DPI_AWARENESS_CONTEXT (WINAPI *pGetWindowDpiAwarenessContext)(HWND); @@ -3027,6 +3029,23 @@ static void test_dpi_aware(void) ret = pSetProcessDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE ); ok( !ret, "got %d\n", ret ); ok( GetLastError() == ERROR_ACCESS_DENIED, "wrong error %u\n", GetLastError() ); + + ret = pSetProcessDpiAwarenessInternal( DPI_AWARENESS_INVALID ); + ok( !ret, "got %d\n", ret ); + ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() ); + ret = pSetProcessDpiAwarenessInternal( DPI_AWARENESS_UNAWARE ); + ok( !ret, "got %d\n", ret ); + ok( GetLastError() == ERROR_ACCESS_DENIED, "wrong error %u\n", GetLastError() ); + ret = pGetProcessDpiAwarenessInternal( 0, &awareness ); + ok( ret, "got %d\n", ret ); + ok( awareness == DPI_AWARENESS_SYSTEM_AWARE, "wrong value %d\n", awareness ); + ret = pGetProcessDpiAwarenessInternal( GetCurrentProcess(), &awareness ); + ok( ret, "got %d\n", ret ); + ok( awareness == DPI_AWARENESS_SYSTEM_AWARE, "wrong value %d\n", awareness ); + ret = pGetProcessDpiAwarenessInternal( (HANDLE)0xdeadbeef, &awareness ); + ok( ret, "got %d\n", ret ); + ok( awareness == DPI_AWARENESS_UNAWARE, "wrong value %d\n", awareness ); + ret = pIsProcessDPIAware(); ok(ret, "got %d\n", ret); context = pGetThreadDpiAwarenessContext(); @@ -3140,6 +3159,8 @@ START_TEST(sysparams) pIsProcessDPIAware = (void*)GetProcAddress(hdll, "IsProcessDPIAware"); pSetProcessDPIAware = (void*)GetProcAddress(hdll, "SetProcessDPIAware"); pSetProcessDpiAwarenessContext = (void*)GetProcAddress(hdll, "SetProcessDpiAwarenessContext"); + pGetProcessDpiAwarenessInternal = (void*)GetProcAddress(hdll, "GetProcessDpiAwarenessInternal"); + pSetProcessDpiAwarenessInternal = (void*)GetProcAddress(hdll, "SetProcessDpiAwarenessInternal"); pGetThreadDpiAwarenessContext = (void*)GetProcAddress(hdll, "GetThreadDpiAwarenessContext"); pSetThreadDpiAwarenessContext = (void*)GetProcAddress(hdll, "SetThreadDpiAwarenessContext"); pGetWindowDpiAwarenessContext = (void*)GetProcAddress(hdll, "GetWindowDpiAwarenessContext"); diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index d407a18..e990951 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -353,6 +353,7 @@ @ stdcall GetPhysicalCursorPos(ptr) @ stdcall GetPriorityClipboardFormat(ptr long) @ stdcall GetProcessDefaultLayout(ptr) +@ stdcall GetProcessDpiAwarenessInternal(long ptr) @ stdcall GetProcessWindowStation() @ stdcall GetProgmanWindow () @ stdcall GetPropA(long str) @@ -676,6 +677,7 @@ @ stdcall SetProcessDPIAware() @ stdcall SetProcessDefaultLayout(long) @ stdcall SetProcessDpiAwarenessContext(long) +@ stdcall SetProcessDpiAwarenessInternal(long) @ stdcall SetProcessWindowStation(long) @ stdcall SetProgmanWindow (long) @ stdcall SetPropA(long str long) diff --git a/include/winuser.h b/include/winuser.h index 63cfd5c..d35c445 100644 --- a/include/winuser.h +++ b/include/winuser.h @@ -3747,6 +3747,7 @@ WINUSERAPI HWND WINAPI GetParent(HWND); WINUSERAPI BOOL WINAPI GetPhysicalCursorPos(POINT*); WINUSERAPI INT WINAPI GetPriorityClipboardFormat(UINT*,INT); WINUSERAPI BOOL WINAPI GetProcessDefaultLayout(DWORD*); +WINUSERAPI BOOL WINAPI GetProcessDpiAwarenessInternal(HANDLE,DPI_AWARENESS*); WINUSERAPI HANDLE WINAPI GetPropA(HWND,LPCSTR); WINUSERAPI HANDLE WINAPI GetPropW(HWND,LPCWSTR); #define GetProp WINELIB_NAME_AW(GetProp) @@ -4067,6 +4068,7 @@ WINUSERAPI BOOL WINAPI SetPhysicalCursorPos(INT,INT); WINUSERAPI BOOL WINAPI SetProcessDPIAware(void); WINUSERAPI BOOL WINAPI SetProcessDefaultLayout(DWORD); WINUSERAPI BOOL WINAPI SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT); +WINUSERAPI BOOL WINAPI SetProcessDpiAwarenessInternal(DPI_AWARENESS); WINUSERAPI BOOL WINAPI SetProcessWindowStation(HWINSTA); WINUSERAPI BOOL WINAPI SetPropA(HWND,LPCSTR,HANDLE); WINUSERAPI BOOL WINAPI SetPropW(HWND,LPCWSTR,HANDLE);
1
0
0
0
Rosanne DiMesio : Re-enable staging checkbox for new test reports
by Jeremy Newman
11 Apr '18
11 Apr '18
Module: appdb Branch: master Commit: fdbd6540fdf1c922f7afeed34230ac49515e802c URL:
https://source.winehq.org/git/appdb.git/?a=commit;h=fdbd6540fdf1c922f7afeed…
Author: Rosanne DiMesio <dimesio(a)earthlink.net> Date: Wed Apr 11 08:54:06 2018 -0500 Re-enable staging checkbox for new test reports Reverts 6150f43320843dd39da749437a7d73a9374a609e. Signed-off-by: Rosanne DiMesio <dimesio(a)earthlink.net> Signed-off-by: Jeremy Newman <jnewman(a)codeweavers.com> --- include/testData.php | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/include/testData.php b/include/testData.php index cec7fec..2b6dbff 100644 --- a/include/testData.php +++ b/include/testData.php @@ -921,14 +921,11 @@ class testData{ echo "<span>Version not listed? Your Wine is too old, <a href=\"//winehq.org/download\">upgrade!</a></span><br>"; // Checkbox for Wine-staging echo '<label class="btn btn-secondary">'; - if($this->sState != 'accepted') - echo '<input type="checkbox" name="iStaging" value="1" disabled>'; + if($this->iStaging != 0) + echo '<input type="checkbox" name="iStaging" value="1" checked>'; else - if($this->iStaging != 0) - echo '<input type="checkbox" name="iStaging" value="1" checked>'; - else - echo '<input type="checkbox" name="iStaging" value="1">'; - echo ' Wine-staging <i>(discontinued; last official release was 2.21)</i>'; + echo '<input type="checkbox" name="iStaging" value="1">'; + echo ' Wine-staging'; echo '</label>'; echo '</td></tr>',"\n";
1
0
0
0
Józef Kucia : libs/vkd3d: Use HRESULT as preferred error code.
by Alexandre Julliard
11 Apr '18
11 Apr '18
Module: vkd3d Branch: master Commit: 0e86a6b353591ef5dd9a659f42d0ddde01939994 URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=0e86a6b353591ef5dd9a659…
Author: Józef Kucia <jkucia(a)codeweavers.com> Date: Wed Apr 11 13:21:43 2018 +0200 libs/vkd3d: Use HRESULT as preferred error code. For consistency. Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/vkd3d.h | 6 ++---- include/vkd3d_utils.h | 2 +- libs/vkd3d-utils/vkd3d_utils_main.c | 6 +++--- libs/vkd3d/command.c | 5 +++-- programs/vkd3d-compiler/main.c | 1 + tests/vkd3d_api.c | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/vkd3d.h b/include/vkd3d.h index 7c5f644..d089ada 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -28,8 +28,6 @@ # include <vulkan/vulkan.h> #endif /* VKD3D_NO_VULKAN_H */ -#include <stdbool.h> - #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -45,12 +43,12 @@ enum vkd3d_structure_type VKD3D_FORCE_32_BIT_ENUM(VKD3D_STRUCTURE_TYPE), }; -typedef bool (*PFN_vkd3d_signal_event)(HANDLE event); +typedef HRESULT (*PFN_vkd3d_signal_event)(HANDLE event); typedef void * (*PFN_vkd3d_thread)(void *data); typedef void * (*PFN_vkd3d_create_thread)(PFN_vkd3d_thread thread_main, void *data); -typedef bool (*PFN_vkd3d_join_thread)(void *thread); +typedef HRESULT (*PFN_vkd3d_join_thread)(void *thread); struct vkd3d_instance; diff --git a/include/vkd3d_utils.h b/include/vkd3d_utils.h index 06b01fc..676d333 100644 --- a/include/vkd3d_utils.h +++ b/include/vkd3d_utils.h @@ -31,7 +31,7 @@ extern "C" { #define INFINITE (~0u) HANDLE vkd3d_create_event(void); -bool vkd3d_signal_event(HANDLE event); +HRESULT vkd3d_signal_event(HANDLE event); unsigned int vkd3d_wait_event(HANDLE event, unsigned int milliseconds); void vkd3d_destroy_event(HANDLE event); diff --git a/libs/vkd3d-utils/vkd3d_utils_main.c b/libs/vkd3d-utils/vkd3d_utils_main.c index adafb00..3c0d139 100644 --- a/libs/vkd3d-utils/vkd3d_utils_main.c +++ b/libs/vkd3d-utils/vkd3d_utils_main.c @@ -159,7 +159,7 @@ unsigned int vkd3d_wait_event(HANDLE event, unsigned int milliseconds) return WAIT_FAILED; } -bool vkd3d_signal_event(HANDLE event) +HRESULT vkd3d_signal_event(HANDLE event) { struct vkd3d_event *impl = event; int rc; @@ -169,13 +169,13 @@ bool vkd3d_signal_event(HANDLE event) if ((rc = pthread_mutex_lock(&impl->mutex))) { ERR("Failed to lock mutex, error %d.\n", rc); - return false; + return E_FAIL; } impl->is_signaled = true; pthread_cond_signal(&impl->cond); pthread_mutex_unlock(&impl->mutex); - return true; + return S_OK; } void vkd3d_destroy_event(HANDLE event) diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c index 39094c2..d9ad8f3 100644 --- a/libs/vkd3d/command.c +++ b/libs/vkd3d/command.c @@ -288,6 +288,7 @@ HRESULT vkd3d_fence_worker_start(struct vkd3d_fence_worker *worker, HRESULT vkd3d_fence_worker_stop(struct vkd3d_fence_worker *worker, struct d3d12_device *device) { + HRESULT hr; int rc; TRACE("worker %p.\n", worker); @@ -305,9 +306,9 @@ HRESULT vkd3d_fence_worker_stop(struct vkd3d_fence_worker *worker, if (device->join_thread) { - if (!device->join_thread(worker->u.handle)) + if (FAILED(hr = device->join_thread(worker->u.handle))) { - ERR("Failed to join fence worker thread.\n"); + ERR("Failed to join fence worker thread, hr %#x.\n", hr); return E_FAIL; } } diff --git a/programs/vkd3d-compiler/main.c b/programs/vkd3d-compiler/main.c index 89778b8..2e65668 100644 --- a/programs/vkd3d-compiler/main.c +++ b/programs/vkd3d-compiler/main.c @@ -17,6 +17,7 @@ */ #include <fcntl.h> +#include <stdbool.h> #include <stdio.h> #include <sys/stat.h> #include <unistd.h> diff --git a/tests/vkd3d_api.c b/tests/vkd3d_api.c index 439cb63..e2d9d01 100644 --- a/tests/vkd3d_api.c +++ b/tests/vkd3d_api.c @@ -54,10 +54,10 @@ static ULONG resource_get_internal_refcount(ID3D12Resource *resource) return vkd3d_resource_decref(resource); } -static bool signal_event(HANDLE event) +static HRESULT signal_event(HANDLE event) { trace("Signal event %p.\n", event); - return true; + return S_OK; } static const struct vkd3d_instance_create_info instance_default_create_info =
1
0
0
0
Józef Kucia : libs/vkd3d: Add support for VK_EXT_debug_report.
by Alexandre Julliard
11 Apr '18
11 Apr '18
Module: vkd3d Branch: master Commit: e6e62e8a8eeca81abae8e83b5784c1a87728ecd1 URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=e6e62e8a8eeca81abae8e83…
Author: Józef Kucia <jkucia(a)codeweavers.com> Date: Wed Apr 11 13:21:42 2018 +0200 libs/vkd3d: Add support for VK_EXT_debug_report. For debug messages from Vulkan drivers. Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- libs/vkd3d/device.c | 74 +++++++++++++++++++++++++++++++++++++++------- libs/vkd3d/utils.c | 5 +++- libs/vkd3d/vkd3d_private.h | 6 +++- libs/vkd3d/vulkan_procs.h | 8 +++++ 4 files changed, 80 insertions(+), 13 deletions(-) diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 0dc13cb..805d477 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -24,12 +24,14 @@ struct vkd3d_optional_extension_info { const char *extension_name; ptrdiff_t vulkan_info_offset; + bool is_debug_only; }; static const struct vkd3d_optional_extension_info optional_instance_extensions[] = { {VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, offsetof(struct vkd3d_vulkan_info, KHR_get_physical_device_properties2)}, + {VK_EXT_DEBUG_REPORT_EXTENSION_NAME, offsetof(struct vkd3d_vulkan_info, EXT_debug_report), true}, }; static const char * const required_device_extensions[] = @@ -59,7 +61,7 @@ static bool is_extension_disabled(const char *extension_name) } static bool has_extension(const VkExtensionProperties *extensions, - unsigned int count, const char *extension_name) + unsigned int count, const char *extension_name, bool is_debug_only) { unsigned int i; @@ -72,6 +74,11 @@ static bool has_extension(const VkExtensionProperties *extensions, WARN("Extension %s is disabled.\n", debugstr_a(extension_name)); continue; } + if (is_debug_only && vkd3d_dbg_get_level() < VKD3D_DBG_LEVEL_WARN) + { + TRACE("Skipping debug-only extension %s.\n", debugstr_a(extension_name)); + continue; + } return true; } return false; @@ -88,7 +95,7 @@ static unsigned int vkd3d_check_extensions(const VkExtensionProperties *extensio for (i = 0; i < required_extension_count; ++i) { - if (!has_extension(extensions, count, required_extensions[i])) + if (!has_extension(extensions, count, required_extensions[i], false)) ERR("Required %s extension %s is not supported.\n", extension_type, debugstr_a(required_extensions[i])); ++extension_count; @@ -98,9 +105,10 @@ static unsigned int vkd3d_check_extensions(const VkExtensionProperties *extensio { const char *extension_name = optional_extensions[i].extension_name; ptrdiff_t offset = optional_extensions[i].vulkan_info_offset; + bool is_debug_only = optional_extensions[i].is_debug_only; bool *supported = (void *)((uintptr_t)vulkan_info + offset); - if ((*supported = has_extension(extensions, count, extension_name))) + if ((*supported = has_extension(extensions, count, extension_name, is_debug_only))) { TRACE("Found %s extension.\n", debugstr_a(extension_name)); ++extension_count; @@ -109,7 +117,7 @@ static unsigned int vkd3d_check_extensions(const VkExtensionProperties *extensio for (i = 0; i < user_extension_count; ++i) { - if (!has_extension(extensions, count, user_extensions[i])) + if (!has_extension(extensions, count, user_extensions[i], false)) ERR("Required user %s extension %s is not supported.\n", extension_type, debugstr_a(user_extensions[i])); ++extension_count; @@ -234,6 +242,36 @@ static HRESULT vkd3d_init_vk_global_procs(struct vkd3d_instance *instance, return S_OK; } +static VkBool32 VKAPI_PTR vkd3d_debug_report_callback(VkDebugReportFlagsEXT flags, + VkDebugReportObjectTypeEXT object_type, uint64_t object, size_t location, + int32_t message_code, const char *layer_prefix, const char *message, void *user_data) +{ + FIXME("%s\n", debugstr_a(message)); + return VK_FALSE; +} + +static void vkd3d_init_debug_report(struct vkd3d_instance *instance) +{ + const struct vkd3d_vk_instance_procs *vk_procs = &instance->vk_procs; + VkDebugReportCallbackCreateInfoEXT callback_info; + VkInstance vk_instance = instance->vk_instance; + VkDebugReportCallbackEXT callback; + VkResult vr; + + callback_info.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; + callback_info.pNext = NULL; + callback_info.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT; + callback_info.pfnCallback = vkd3d_debug_report_callback; + callback_info.pUserData = NULL; + if ((vr = VK_CALL(vkCreateDebugReportCallbackEXT(vk_instance, &callback_info, NULL, &callback)) < 0)) + { + WARN("Failed to create debug report callback, vr %d.\n", vr); + return; + } + + instance->vk_debug_callback = callback; +} + static HRESULT vkd3d_instance_init(struct vkd3d_instance *instance, const struct vkd3d_instance_create_info *create_info) { @@ -333,6 +371,10 @@ static HRESULT vkd3d_instance_init(struct vkd3d_instance *instance, instance->refcount = 1; + instance->vk_debug_callback = VK_NULL_HANDLE; + if (instance->vk_info.EXT_debug_report) + vkd3d_init_debug_report(instance); + return S_OK; } @@ -370,6 +412,22 @@ HRESULT vkd3d_create_instance(const struct vkd3d_instance_create_info *create_in return S_OK; } +static void vkd3d_destroy_instance(struct vkd3d_instance *instance) +{ + const struct vkd3d_vk_instance_procs *vk_procs = &instance->vk_procs; + VkInstance vk_instance = instance->vk_instance; + + if (instance->vk_debug_callback) + VK_CALL(vkDestroyDebugReportCallbackEXT(vk_instance, instance->vk_debug_callback, NULL)); + + VK_CALL(vkDestroyInstance(vk_instance, NULL)); + + if (instance->libvulkan) + dlclose(instance->libvulkan); + + vkd3d_free(instance); +} + ULONG vkd3d_instance_incref(struct vkd3d_instance *instance) { ULONG refcount = InterlockedIncrement(&instance->refcount); @@ -386,13 +444,7 @@ ULONG vkd3d_instance_decref(struct vkd3d_instance *instance) TRACE("%p decreasing refcount to %u.\n", instance, refcount); if (!refcount) - { - const struct vkd3d_vk_instance_procs *vk_procs = &instance->vk_procs; - VK_CALL(vkDestroyInstance(instance->vk_instance, NULL)); - if (instance->libvulkan) - dlclose(instance->libvulkan); - vkd3d_free(instance); - } + vkd3d_destroy_instance(instance); return refcount; } diff --git a/libs/vkd3d/utils.c b/libs/vkd3d/utils.c index a62a746..43c8356 100644 --- a/libs/vkd3d/utils.c +++ b/libs/vkd3d/utils.c @@ -399,13 +399,16 @@ HRESULT vkd3d_load_vk_global_procs(struct vkd3d_vk_global_procs *procs, ERR("Could not get instance proc addr for '" #name "'.\n"); \ return E_FAIL; \ } +#define LOAD_INSTANCE_OPTIONAL_PFN(name) \ + procs->name = (void *)global_procs->vkGetInstanceProcAddr(instance, #name); HRESULT vkd3d_load_vk_instance_procs(struct vkd3d_vk_instance_procs *procs, const struct vkd3d_vk_global_procs *global_procs, VkInstance instance) { memset(procs, 0, sizeof(*procs)); -#define VK_INSTANCE_PFN LOAD_INSTANCE_PFN +#define VK_INSTANCE_PFN LOAD_INSTANCE_PFN +#define VK_INSTANCE_EXT_PFN LOAD_INSTANCE_OPTIONAL_PFN #include "vulkan_procs.h" TRACE("Loaded procs for VkInstance %p.\n", instance); diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h index cf3112e..246c42b 100644 --- a/libs/vkd3d/vkd3d_private.h +++ b/libs/vkd3d/vkd3d_private.h @@ -58,7 +58,8 @@ struct vkd3d_vk_global_procs #define DECLARE_VK_PFN(name) PFN_##name name; struct vkd3d_vk_instance_procs { -#define VK_INSTANCE_PFN DECLARE_VK_PFN +#define VK_INSTANCE_PFN DECLARE_VK_PFN +#define VK_INSTANCE_EXT_PFN DECLARE_VK_PFN #include "vulkan_procs.h" }; @@ -75,6 +76,7 @@ struct vkd3d_vulkan_info { /* instance extensions */ bool KHR_get_physical_device_properties2; + bool EXT_debug_report; /* device extensions */ bool KHR_push_descriptor; @@ -96,6 +98,8 @@ struct vkd3d_instance struct vkd3d_vk_global_procs vk_global_procs; void *libvulkan; + VkDebugReportCallbackEXT vk_debug_callback; + LONG refcount; }; diff --git a/libs/vkd3d/vulkan_procs.h b/libs/vkd3d/vulkan_procs.h index cbdcda8..690a1a2 100644 --- a/libs/vkd3d/vulkan_procs.h +++ b/libs/vkd3d/vulkan_procs.h @@ -20,6 +20,10 @@ # define VK_INSTANCE_PFN(x) #endif +#ifndef VK_INSTANCE_EXT_PFN +# define VK_INSTANCE_EXT_PFN(x) +#endif + #ifndef VK_DEVICE_PFN # define VK_DEVICE_PFN(x) #endif @@ -42,6 +46,9 @@ VK_INSTANCE_PFN(vkGetPhysicalDeviceMemoryProperties) VK_INSTANCE_PFN(vkGetPhysicalDeviceProperties) VK_INSTANCE_PFN(vkGetPhysicalDeviceQueueFamilyProperties) VK_INSTANCE_PFN(vkGetPhysicalDeviceSparseImageFormatProperties) +/* VK_EXT_debug_report */ +VK_INSTANCE_EXT_PFN(vkCreateDebugReportCallbackEXT) +VK_INSTANCE_EXT_PFN(vkDestroyDebugReportCallbackEXT) /* Device functions (obtained by vkGetDeviceProcAddr). */ VK_DEVICE_PFN(vkDestroyDevice) /* Load vkDestroyDevice() first. */ @@ -168,5 +175,6 @@ VK_DEVICE_PFN(vkWaitForFences) VK_DEVICE_EXT_PFN(vkCmdPushDescriptorSetKHR) #undef VK_INSTANCE_PFN +#undef VK_INSTANCE_EXT_PFN #undef VK_DEVICE_PFN #undef VK_DEVICE_EXT_PFN
1
0
0
0
← Newer
1
...
35
36
37
38
39
40
41
...
55
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
Results per page:
10
25
50
100
200