Jacek Caban : winex11: Directly use ntdll for registry access in write_registry_settings.
Alexandre Julliard
julliard at winehq.org
Mon Apr 11 15:54:59 CDT 2022
Module: wine
Branch: master
Commit: 91d6e8b4abe46a58a931c8b6ce0383bffa8f2566
URL: https://source.winehq.org/git/wine.git/?a=commit;h=91d6e8b4abe46a58a931c8b6ce0383bffa8f2566
Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
}
More information about the wine-cvs
mailing list