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.
This commit is contained in:
Carlos Garnacho 2018-06-06 13:26:55 +02:00
parent 69ca584168
commit 6abe4703c7

View File

@ -115,5 +115,8 @@ meta_window_kill (MetaWindow *window)
void void
meta_window_free_delete_dialog (MetaWindow *window) 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); g_clear_object (&window->close_dialog);
} }