From: Luca Bacci Date: Tue, 19 Sep 2023 16:46:41 +0000 (+0200) Subject: GdkWin32: Unref GdkMonitor after calling gdk_monitor_invalidate () X-Git-Tag: archive/raspbian/4.12.4+ds-3+rpi1^2~21^2~1^2~35^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=7062a374ee0f74e728d80f27844cf1da2438c7f9;p=gtk4.git GdkWin32: Unref GdkMonitor after calling gdk_monitor_invalidate () Ensure that we have a reference when calling gdk_monitor_invalidate () Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/6080 --- diff --git a/gdk/win32/gdkdisplay-win32.c b/gdk/win32/gdkdisplay-win32.c index 441f7fc914..d0f6a5bf49 100644 --- a/gdk/win32/gdkdisplay-win32.c +++ b/gdk/win32/gdkdisplay-win32.c @@ -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++)