Module: wine Branch: master Commit: 91d6e8b4abe46a58a931c8b6ce0383bffa8f2566 URL: https://source.winehq.org/git/wine.git/?a=commit;h=91d6e8b4abe46a58a931c8b6c...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Apr 8 13:30:02 2022 +0200
winex11: Directly use ntdll for registry access in write_registry_settings.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winex11.drv/Makefile.in | 2 +- dlls/winex11.drv/settings.c | 33 +++++++++++++++++---------------- 2 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/dlls/winex11.drv/Makefile.in b/dlls/winex11.drv/Makefile.in index 93a975d7f63..b6b1062c425 100644 --- a/dlls/winex11.drv/Makefile.in +++ b/dlls/winex11.drv/Makefile.in @@ -1,6 +1,6 @@ EXTRADEFS = -DWINE_NO_LONG_TYPES MODULE = winex11.drv -IMPORTS = uuid user32 gdi32 advapi32 win32u +IMPORTS = uuid user32 gdi32 win32u DELAYIMPORTS = comctl32 ole32 shell32 imm32 EXTRAINCL = $(X_CFLAGS) EXTRALIBS = $(X_LIBS) $(X_EXTRA_LIBS) diff --git a/dlls/winex11.drv/settings.c b/dlls/winex11.drv/settings.c index 61bdf1afd0f..ec8a01fbc58 100644 --- a/dlls/winex11.drv/settings.c +++ b/dlls/winex11.drv/settings.c @@ -319,6 +319,13 @@ static BOOL read_registry_settings(const WCHAR *device_name, DEVMODEW *dm) return ret; }
+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) { HANDLE mutex; @@ -332,23 +339,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->u2.dmDisplayFlags ); + ret &= set_setting_value( hkey, "DefaultSettings.XPanning", dm->u1.s2.dmPosition.x ); + ret &= set_setting_value( hkey, "DefaultSettings.YPanning", dm->u1.s2.dmPosition.y ); + ret &= set_setting_value( hkey, "DefaultSettings.Orientation", dm->u1.s2.dmDisplayOrientation ); + ret &= set_setting_value( hkey, "DefaultSettings.FixedOutput", dm->u1.s2.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->u2.dmDisplayFlags); - set_value("DefaultSettings.XPanning", &dm->u1.s2.dmPosition.x); - set_value("DefaultSettings.YPanning", &dm->u1.s2.dmPosition.y); - set_value("DefaultSettings.Orientation", &dm->u1.s2.dmDisplayOrientation); - set_value("DefaultSettings.FixedOutput", &dm->u1.s2.dmDisplayFixedOutput); - -#undef set_value - - RegCloseKey(hkey); + NtClose( hkey ); release_display_device_init_mutex(mutex); return ret; }