[PATCH 3/6] explorer: Initialize registry display settings for all adapters.

Zhiyi Zhang zzhang at codeweavers.com
Wed Jun 3 09:29:19 CDT 2020


Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
 programs/explorer/desktop.c | 29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c
index 8a8e5bc0712..e7acb2db772 100644
--- a/programs/explorer/desktop.c
+++ b/programs/explorer/desktop.c
@@ -22,6 +22,8 @@
 #include <stdio.h>
 
 #define COBJMACROS
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
 #define OEMRESOURCE
 #include <windows.h>
 #include <rpc.h>
@@ -881,16 +883,31 @@ static HMODULE load_graphics_driver( const WCHAR *driver, const GUID *guid )
 
 static void initialize_display_settings(void)
 {
+    DISPLAY_DEVICEW ddW;
     DEVMODEW dmW;
+    DWORD i = 0;
 
     /* Store current display mode in the registry */
-    if (EnumDisplaySettingsExW( NULL, ENUM_CURRENT_SETTINGS, &dmW, 0 ))
+    ddW.cb = sizeof(ddW);
+    dmW.dmSize = sizeof(dmW);
+    while (EnumDisplayDevicesW( NULL, i++, &ddW, 0 ))
     {
-        WINE_TRACE( "Current display mode %ux%u %u bpp %u Hz\n", dmW.dmPelsWidth,
-                    dmW.dmPelsHeight, dmW.dmBitsPerPel, dmW.dmDisplayFrequency );
-        ChangeDisplaySettingsExW( NULL, &dmW, 0,
-                                  CDS_GLOBAL | CDS_NORESET | CDS_UPDATEREGISTRY,
-                                  NULL );
+        if (!EnumDisplaySettingsExW( ddW.DeviceName, ENUM_CURRENT_SETTINGS, &dmW, 0))
+        {
+            WINE_ERR( "Failed to query current display settings for %s.\n",
+                      wine_dbgstr_w( ddW.DeviceName ) );
+            continue;
+        }
+
+        WINE_TRACE( "Device %s current display mode %ux%u %uBits %uHz at %d,%d.\n",
+                    wine_dbgstr_w( ddW.DeviceName ), dmW.dmPelsWidth, dmW.dmPelsHeight,
+                    dmW.dmBitsPerPel, dmW.dmDisplayFrequency, dmW.u1.s2.dmPosition.x,
+                    dmW.u1.s2.dmPosition.y );
+
+        if (ChangeDisplaySettingsExW( ddW.DeviceName, &dmW, 0,
+                                      CDS_GLOBAL | CDS_NORESET | CDS_UPDATEREGISTRY, 0 ))
+            WINE_ERR( "Failed to initialize registry display settings for %s.\n",
+                       wine_dbgstr_w( ddW.DeviceName ) );
     }
 }
 
-- 
2.25.1




More information about the wine-devel mailing list