From: Rémi Bernon rbernon@codeweavers.com
--- dlls/win32u/sysparams.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 2927c94f2a7..867332624d1 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -2020,12 +2020,15 @@ static struct adapter *find_adapter( UNICODE_STRING *name ) struct display_device *device; struct adapter *adapter;
+ if (!lock_display_devices()) return NULL; + if (name && name->Length) device = find_adapter_device_by_name( name ); else device = find_adapter_device_by_id( 0 ); /* use primary adapter */
if (!device) adapter = NULL; else adapter = adapter_acquire( CONTAINING_RECORD( device, struct adapter, dev ) );
+ unlock_display_devices(); return adapter; }
@@ -2493,10 +2496,7 @@ LONG WINAPI NtUserChangeDisplaySettings( UNICODE_STRING *devname, DEVMODEW *devm
if ((!devname || !devname->Length) && !devmode) return apply_display_settings( NULL, NULL, hwnd, flags, lparam );
- if (!lock_display_devices()) return DISP_CHANGE_FAILED; - adapter = find_adapter( devname ); - unlock_display_devices(); - if (!adapter) return DISP_CHANGE_BADPARAM; + if (!(adapter = find_adapter( devname ))) return DISP_CHANGE_BADPARAM;
if (!adapter_get_full_mode( adapter, devmode, &full_mode )) ret = DISP_CHANGE_BADMODE; else if ((flags & CDS_UPDATEREGISTRY) && !adapter_set_registry_settings( adapter, &full_mode )) ret = DISP_CHANGE_NOTUPDATED; @@ -2552,10 +2552,7 @@ BOOL WINAPI NtUserEnumDisplaySettings( UNICODE_STRING *device, DWORD index, DEVM
TRACE( "device %s, index %#x, devmode %p, flags %#x\n", debugstr_us(device), index, devmode, flags );
- if (!lock_display_devices()) return FALSE; - adapter = find_adapter( device ); - unlock_display_devices(); - if (!adapter) return FALSE; + if (!(adapter = find_adapter( device ))) return FALSE;
lstrcpynW( devmode->dmDeviceName, wine_display_driverW, ARRAY_SIZE(devmode->dmDeviceName) ); devmode->dmSpecVersion = DM_SPECVERSION;