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