[PATCH 1/3] user32: Wait for graphics driver to be ready in EnumDisplayDevicesW.
Zhiyi Zhang
zzhang at codeweavers.com
Wed Aug 14 03:21:06 CDT 2019
It's possible that EnumDisplayDevicesW gets called before graphics driver is loaded.
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
Supersede 167499.
dlls/user32/sysparams.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index 3f93f9c827..4541795672 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -736,6 +736,18 @@ static void release_display_device_init_mutex( HANDLE mutex )
CloseHandle( mutex );
}
+/* Wait until graphics driver is loaded by explorer */
+static void wait_graphics_driver_ready(void)
+{
+ static BOOL ready = FALSE;
+
+ if (!ready)
+ {
+ SendMessageW( GetDesktopWindow(), WM_NULL, 0, 0 );
+ ready = TRUE;
+ }
+}
+
/* map value from system dpi to standard 96 dpi for storing in the registry */
static int map_from_system_dpi( int val )
{
@@ -4058,6 +4070,7 @@ BOOL WINAPI EnumDisplayDevicesW( LPCWSTR device, DWORD index, DISPLAY_DEVICEW *i
TRACE("%s %d %p %#x\n", debugstr_w( device ), index, info, flags);
+ wait_graphics_driver_ready();
mutex = get_display_device_init_mutex();
/* Find adapter */
--
2.20.1
More information about the wine-devel
mailing list