Jacek Caban : winemac: Directly use ntdll to write display settings.

Alexandre Julliard julliard at winehq.org
Tue May 17 15:37:22 CDT 2022


Module: wine
Branch: master
Commit: 5c9eb1905c90583937701df2c7975d5cf3e656d6
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=5c9eb1905c90583937701df2c7975d5cf3e656d6

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri May 13 16:03:45 2022 +0200

winemac: Directly use ntdll to write display settings.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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;
 }




More information about the wine-cvs mailing list