Zhiyi Zhang : user32: Wait for graphics driver to be ready in EnumDisplayDevicesW.

Alexandre Julliard julliard at winehq.org
Wed Aug 21 14:39:33 CDT 2019


Module: wine
Branch: master
Commit: 8f45d9a991cbc739fafde55811524eaf742282b0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=8f45d9a991cbc739fafde55811524eaf742282b0

Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date:   Wed Aug 14 16:21:06 2019 +0800

user32: Wait for graphics driver to be ready in EnumDisplayDevicesW.

It's possible that EnumDisplayDevicesW gets called before graphics driver is loaded.

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/sysparams.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index cdeea65..09cebc2 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 )
 {
@@ -4048,6 +4060,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 */




More information about the wine-cvs mailing list