[PATCH 5/5] user32/tests: Try to read the dpi from the user key first
Huw Davies
huw at codeweavers.com
Thu Apr 27 05:02:37 CDT 2017
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
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 96b15814d7..d879036096 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,
--
2.12.0
More information about the wine-patches
mailing list