[PATCH 3/9] winemac: Directly use ntdll to write display settings.
Jacek Caban
wine at gitlab.winehq.org
Mon May 16 17:54:07 CDT 2022
From: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
---
dlls/winemac.drv/display.c | 34 ++++++++++++++++++----------------
1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/dlls/winemac.drv/display.c b/dlls/winemac.drv/display.c
index d81b0d5f606..75904bd6f5f 100644
--- a/dlls/winemac.drv/display.c
+++ b/dlls/winemac.drv/display.c
@@ -178,6 +178,14 @@ static BOOL read_registry_settings(const WCHAR *device_name, DEVMODEW *dm)
}
+static BOOL set_setting_value(HKEY hkey, const char *name, DWORD val)
+{
+ WCHAR nameW[128];
+ UNICODE_STRING str = { asciiz_to_unicode(nameW, name) - sizeof(WCHAR), sizeof(nameW), nameW };
+ return !NtSetValueKey(hkey, &str, 0, REG_DWORD, &val, sizeof(val));
+}
+
+
static BOOL write_registry_settings(const WCHAR *device_name, const DEVMODEW *dm)
{
WCHAR wine_mac_reg_key[MAX_PATH];
@@ -199,23 +207,17 @@ static BOOL write_registry_settings(const WCHAR *device_name, const DEVMODEW *dm
return FALSE;
}
-#define set_value(name, data) \
- if (RegSetValueExA(hkey, name, 0, REG_DWORD, (const BYTE*)(data), sizeof(DWORD))) \
- ret = FALSE
+ ret &= set_setting_value(hkey, "DefaultSettings.BitsPerPel", dm->dmBitsPerPel);
+ ret &= set_setting_value(hkey, "DefaultSettings.XResolution", dm->dmPelsWidth);
+ ret &= set_setting_value(hkey, "DefaultSettings.YResolution", dm->dmPelsHeight);
+ ret &= set_setting_value(hkey, "DefaultSettings.VRefresh", dm->dmDisplayFrequency);
+ ret &= set_setting_value(hkey, "DefaultSettings.Flags", dm->dmDisplayFlags);
+ ret &= set_setting_value(hkey, "DefaultSettings.XPanning", dm->dmPosition.x);
+ ret &= set_setting_value(hkey, "DefaultSettings.YPanning", dm->dmPosition.y);
+ ret &= set_setting_value(hkey, "DefaultSettings.Orientation", dm->dmDisplayOrientation);
+ ret &= set_setting_value(hkey, "DefaultSettings.FixedOutput", dm->dmDisplayFixedOutput);
- set_value("DefaultSettings.BitsPerPel", &dm->dmBitsPerPel);
- set_value("DefaultSettings.XResolution", &dm->dmPelsWidth);
- set_value("DefaultSettings.YResolution", &dm->dmPelsHeight);
- set_value("DefaultSettings.VRefresh", &dm->dmDisplayFrequency);
- set_value("DefaultSettings.Flags", &dm->dmDisplayFlags);
- set_value("DefaultSettings.XPanning", &dm->dmPosition.x);
- set_value("DefaultSettings.YPanning", &dm->dmPosition.y);
- set_value("DefaultSettings.Orientation", &dm->dmDisplayOrientation);
- set_value("DefaultSettings.FixedOutput", &dm->dmDisplayFixedOutput);
-
-#undef set_value
-
- RegCloseKey(hkey);
+ NtClose(hkey);
release_display_device_init_mutex(mutex);
return ret;
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/77
More information about the wine-devel
mailing list