[PATCH v2] programs/winecfg: Disable virtual desktop when using macdrv.

Gijs Vermeulen gijsvrm at gmail.com
Wed Aug 18 07:06:35 CDT 2021


Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
---
 programs/winecfg/x11drvdlg.c | 33 ++++++++++++++++++++++++++++++---
 1 file changed, 30 insertions(+), 3 deletions(-)

diff --git a/programs/winecfg/x11drvdlg.c b/programs/winecfg/x11drvdlg.c
index fbc6716e94e..34b194d04a6 100644
--- a/programs/winecfg/x11drvdlg.c
+++ b/programs/winecfg/x11drvdlg.c
@@ -111,17 +111,44 @@ static void update_gui_for_desktop_mode(HWND dialog)
     updating_ui = FALSE;
 }
 
+static BOOL can_enable_desktop(void)
+{
+    char *value;
+    UINT guid_atom;
+    BOOL ret = FALSE;
+    char key[sizeof("System\\CurrentControlSet\\Control\\Video\\{}\\0000") + 40];
+
+    guid_atom = HandleToULong(GetPropA(GetDesktopWindow(), "__wine_display_device_guid"));
+    strcpy( key, "System\\CurrentControlSet\\Control\\Video\\{" );
+    if (!GlobalGetAtomNameA(guid_atom, key + strlen(key), 40)) return ret;
+    strcat( key, "}\\0000" );
+    if ((value = get_reg_key(HKEY_LOCAL_MACHINE, key, "GraphicsDriver", NULL)))
+    {
+        if(strcmp(value, "winemac.drv"))
+            ret = TRUE;
+        HeapFree(GetProcessHeap(), 0, value);
+    }
+    return ret;
+}
+
 static void init_dialog(HWND dialog)
 {
     char* buf;
+    BOOL enable_desktop;
 
     convert_x11_desktop_key();
-    update_gui_for_desktop_mode(dialog);
+    if ((enable_desktop = can_enable_desktop()))
+        update_gui_for_desktop_mode(dialog);
+    else
+        disable(IDC_ENABLE_DESKTOP);
 
     updating_ui = TRUE;
 
-    SendDlgItemMessageW(dialog, IDC_DESKTOP_WIDTH, EM_LIMITTEXT, RES_MAXLEN, 0);
-    SendDlgItemMessageW(dialog, IDC_DESKTOP_HEIGHT, EM_LIMITTEXT, RES_MAXLEN, 0);
+    if (enable_desktop)
+    {
+        SendDlgItemMessageW(dialog, IDC_DESKTOP_WIDTH, EM_LIMITTEXT, RES_MAXLEN, 0);
+        SendDlgItemMessageW(dialog, IDC_DESKTOP_HEIGHT, EM_LIMITTEXT, RES_MAXLEN, 0);
+    }
 
     buf = get_reg_key(config_key, keypath("X11 Driver"), "GrabFullscreen", "N");
     if (IS_OPTION_TRUE(*buf))
-- 
2.33.0




More information about the wine-devel mailing list