From 17ae09ad3fa818d0c88695f6d6fbf0d149423041 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 6 Jun 2018 11:26:55 +0000 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. (cherry picked from commit 6abe4703c7b4e24dbdd59631fe1eed637b84d12c) --- 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); }