Commit 8a9c34ed authored by Rémi Bernon's avatar Rémi Bernon Committed by Alexandre Julliard

win32u: Add a BOOL force parameter to update_display_cache.

And call it recursively with force = TRUE instead of calling graphics driver pUpdateDisplayDevices separately.
parent d75f6514
......@@ -1512,7 +1512,7 @@ static BOOL update_display_cache_from_registry(void)
return ret;
}
static BOOL update_display_cache(void)
static BOOL update_display_cache( BOOL force )
{
HWINSTA winstation = NtUserGetProcessWindowStation();
struct device_manager_ctx ctx = {0};
......@@ -1529,17 +1529,7 @@ static BOOL update_display_cache(void)
return TRUE;
}
user_driver->pUpdateDisplayDevices( &device_manager, FALSE, &ctx );
release_display_manager_ctx( &ctx );
if (update_display_cache_from_registry()) return TRUE;
if (ctx.gpu_count)
{
ERR( "driver reported devices, but we failed to read them\n" );
return FALSE;
}
if (!user_driver->pUpdateDisplayDevices( &device_manager, TRUE, &ctx ))
if (!user_driver->pUpdateDisplayDevices( &device_manager, force, &ctx ) && force)
{
static const DEVMODEW modes[] =
{
......@@ -1578,15 +1568,27 @@ static BOOL update_display_cache(void)
if (!update_display_cache_from_registry())
{
ERR( "failed to read display config\n" );
if (force)
{
ERR( "Failed to read display config.\n" );
return FALSE;
}
if (ctx.gpu_count)
{
ERR( "Driver reported devices, but we failed to read them.\n" );
return FALSE;
}
return update_display_cache( TRUE );
}
return TRUE;
}
static BOOL lock_display_devices(void)
{
if (!update_display_cache()) return FALSE;
if (!update_display_cache( FALSE )) return FALSE;
pthread_mutex_lock( &display_lock );
return TRUE;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment