Blob Blame History Raw
From b5b252af2580c8dad8097037481963f93babfba7 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Wed, 6 Jun 2018 13:26:55 +0200
Subject: [PATCH] core: Hide close dialog before destroying

The MetaCloseDialog implementation object may stay artifically alive
for a longer period. This was usually fine till gnome-shell commit
b03bcc85aad, as the check_alive() timeout will keep running even
though the window went unmanaged/destroyed, leading to crashes.

In order to fix this, forcibly hide the dialog if it is visible and
the window is being unmanaged, so the timeout is stopped in time.
---
 src/core/delete.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/core/delete.c b/src/core/delete.c
index af7cffed9..fd94dc6ca 100644
--- a/src/core/delete.c
+++ b/src/core/delete.c
@@ -115,5 +115,8 @@ meta_window_kill (MetaWindow *window)
 void
 meta_window_free_delete_dialog (MetaWindow *window)
 {
+  if (window->close_dialog &&
+      meta_close_dialog_is_visible (window->close_dialog))
+    meta_close_dialog_hide (window->close_dialog);
   g_clear_object (&window->close_dialog);
 }
-- 
2.25.1