Huw Davies : user32/tests: Try to read the dpi from the user key first.

Alexandre Julliard julliard at winehq.org
Thu Apr 27 15:49:11 CDT 2017


Module: wine
Branch: master
Commit: 3845b0bb73f26146d03632702bec21ac6e808c4d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3845b0bb73f26146d03632702bec21ac6e808c4d

Author: Huw Davies <huw at codeweavers.com>
Date:   Thu Apr 27 11:02:37 2017 +0100

user32/tests: Try to read the dpi from the user key first.

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/tests/sysparams.c | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c
index 96b1581..d879036 100644
--- a/dlls/user32/tests/sysparams.c
+++ b/dlls/user32/tests/sysparams.c
@@ -165,17 +165,34 @@ static int last_bpp;
 static BOOL displaychange_ok = FALSE, displaychange_test_active = FALSE;
 static HANDLE displaychange_sem = 0;
 
-static int get_real_dpi(void)
+static BOOL get_reg_dword(HKEY base, const char *key_name, const char *value_name, DWORD *value)
 {
     HKEY key;
-    DWORD value = USER_DEFAULT_SCREEN_DPI, size = sizeof(value);
+    DWORD type, data, size = sizeof(data);
+    BOOL ret = FALSE;
 
-    if (!RegOpenKeyA(HKEY_CURRENT_USER, "Control Panel\\Desktop", &key))
+    if (RegOpenKeyA(base, key_name, &key) == ERROR_SUCCESS)
     {
-        RegQueryValueExA(key, "LogPixels", NULL, NULL, (BYTE *)&value, &size);
+        if (RegQueryValueExA(key, value_name, NULL, &type, (void *)&data, &size) == ERROR_SUCCESS &&
+            type == REG_DWORD)
+        {
+            *value = data;
+            ret = TRUE;
+        }
         RegCloseKey(key);
     }
-    return value;
+    return ret;
+}
+
+static DWORD get_real_dpi(void)
+{
+    DWORD 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))
+        return dpi;
+    return USER_DEFAULT_SCREEN_DPI;
 }
 
 static LRESULT CALLBACK SysParamsTestWndProc( HWND hWnd, UINT msg, WPARAM wParam,




More information about the wine-cvs mailing list