From: Fabian Maurer dark.shadow4@web.de
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56360 --- dlls/user32/sysparams.c | 11 +++++++++-- dlls/user32/tests/sysparams.c | 1 - 2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c index d30bed44b31..9fa37a292d1 100644 --- a/dlls/user32/sysparams.c +++ b/dlls/user32/sysparams.c @@ -636,13 +636,20 @@ BOOL WINAPI SetProcessDpiAwarenessInternal( DPI_AWARENESS awareness ) return SetProcessDpiAwarenessContext( contexts[awareness] ); }
+static ULONG_PTR map_awareness_context( DPI_AWARENESS_CONTEXT ctx ) +{ + if (ctx == DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 || ctx == (DPI_AWARENESS_CONTEXT)0x22 || ctx == (DPI_AWARENESS_CONTEXT)0x80000022) + return 0x22; + return GetAwarenessFromDpiAwarenessContext(ctx); +} + /*********************************************************************** * AreDpiAwarenessContextsEqual (USER32.@) */ BOOL WINAPI AreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT ctx1, DPI_AWARENESS_CONTEXT ctx2 ) { - DPI_AWARENESS aware1 = GetAwarenessFromDpiAwarenessContext( ctx1 ); - DPI_AWARENESS aware2 = GetAwarenessFromDpiAwarenessContext( ctx2 ); + DPI_AWARENESS aware1 = map_awareness_context( ctx1 ); + DPI_AWARENESS aware2 = map_awareness_context( ctx2 ); return aware1 != DPI_AWARENESS_INVALID && aware1 == aware2; }
diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c index 30e44ca4c9c..4e588f60bba 100644 --- a/dlls/user32/tests/sysparams.c +++ b/dlls/user32/tests/sysparams.c @@ -3870,7 +3870,6 @@ static void test_AreDpiAwarenessContextsEqual(ULONG_PTR flags) int map_i = map_context(contexts[i], flags); int map_j = map_context(contexts[j], flags); BOOL equal_expected = map_i == map_j; - todo_wine_if((map_i == 0x22 && map_j == 0x12) || (map_j == 0x22 && map_i == 0x12)) ok(equal == equal_expected, "(%d, %d) (%p == %p) - Expected equal to be %d but got %d\n", i, j, (DPI_AWARENESS_CONTEXT)contexts[i], (DPI_AWARENESS_CONTEXT)contexts[j], equal_expected, equal); } }