GdkWin32: Unref GdkMonitor after calling gdk_monitor_invalidate ()
authorLuca Bacci <luca.bacci982@gmail.com>
Tue, 19 Sep 2023 16:46:41 +0000 (18:46 +0200)
committerLuca Bacci <luca.bacci982@gmail.com>
Tue, 19 Sep 2023 16:52:39 +0000 (18:52 +0200)
Ensure that we have a reference when calling gdk_monitor_invalidate ()

Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/6080

gdk/win32/gdkdisplay-win32.c

index 441f7fc914042c65f7df30c817ca39613035aec2..d0f6a5bf4997cd0680131b8316dfe95fbd6e97cf 100644 (file)
@@ -286,15 +286,16 @@ _gdk_win32_display_init_monitors (GdkWin32Display *win32_display)
       GdkMonitor *ex_monitor;
 
       w32_ex_monitor = GDK_WIN32_MONITOR (g_list_model_get_item (win32_display->monitors, i));
-      g_object_unref (w32_ex_monitor);
       ex_monitor = GDK_MONITOR (w32_ex_monitor);
 
-      if (!w32_ex_monitor->remove)
-        continue;
+      if (w32_ex_monitor->remove)
+        {
+          w32_ex_monitor->hmonitor = NULL;
+          g_list_store_remove (G_LIST_STORE (win32_display->monitors), i);
+          gdk_monitor_invalidate (ex_monitor);
+        }
 
-      w32_ex_monitor->hmonitor = NULL;
-      g_list_store_remove (G_LIST_STORE (win32_display->monitors), i);
-      gdk_monitor_invalidate (ex_monitor);
+      g_object_unref (w32_ex_monitor);
     }
 
   for (i = 0; i < new_monitors->len; i++)