From 6a172090aa860eb5c1823b10964a91e982ed9ad0 Mon Sep 17 00:00:00 2001 From: Jason Francis Date: Wed, 24 May 2023 17:34:34 -0400 Subject: [PATCH] win32: Invalidate inactive monitors Without this, there are still GdkMonitors present for displays that are present but disconnected (such as when a laptop disables the internal display to connect to an external monitor). --- gdk/win32/gdkmonitor-win32.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gdk/win32/gdkmonitor-win32.c b/gdk/win32/gdkmonitor-win32.c index 93fd2a489f..3702820c98 100644 --- a/gdk/win32/gdkmonitor-win32.c +++ b/gdk/win32/gdkmonitor-win32.c @@ -443,9 +443,6 @@ populate_monitor_devices_from_display_config (GPtrArray *monitors) char *path, *path_lower; DISPLAYCONFIG_RATIONAL *refresh; - if ((dispconf_paths[path_index].flags & DISPLAYCONFIG_PATH_ACTIVE) == 0) - continue; - tdn.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME; tdn.header.size = sizeof (tdn); tdn.header.adapterId = dispconf_paths[path_index].targetInfo.adapterId; @@ -481,6 +478,12 @@ populate_monitor_devices_from_display_config (GPtrArray *monitors) if (w32mon == NULL) continue; + if ((dispconf_paths[path_index].flags & DISPLAYCONFIG_PATH_ACTIVE) == 0) + { + w32mon->remove = TRUE; + continue; + } + mon = GDK_MONITOR (w32mon); if (!tdn.flags.friendlyNameForced) -- 2.30.2