display: Dispose Stack after Compositor and X11

As per commit 7718e67f, destroying the compositor causes destroying window
actors and this leads to stack changes, but at this point the stack was already
disposed and cleared.

So, clear the stack when any component that could use it (compositor, and X11)
has already been destroyed.
As consequence, also the stamps should be destroyed at later point.

Fixes https://gitlab.gnome.org/GNOME/mutter/issues/623
https://gitlab.gnome.org/GNOME/mutter/merge_requests/605
This commit is contained in:
Marco Trevisan (Treviño) 2019-06-04 11:47:06 +02:00 committed by Marco Trevisan
parent a3b86447f7
commit e94a0fced9

View File

@ -956,10 +956,6 @@ meta_display_close (MetaDisplay *display,
g_clear_object (&display->gesture_tracker);
g_clear_object (&display->stack);
g_clear_pointer (&display->stack_tracker,
meta_stack_tracker_free);
if (display->focus_timeout_id)
g_source_remove (display->focus_timeout_id);
display->focus_timeout_id = 0;
@ -976,17 +972,21 @@ meta_display_close (MetaDisplay *display,
/* Stop caring about events */
meta_display_free_events (display);
if (display->compositor)
meta_compositor_destroy (display->compositor);
meta_display_shutdown_x11 (display);
g_clear_object (&display->stack);
g_clear_pointer (&display->stack_tracker,
meta_stack_tracker_free);
/* Must be after all calls to meta_window_unmanage() since they
* unregister windows
*/
g_hash_table_destroy (display->wayland_windows);
g_hash_table_destroy (display->stamps);
if (display->compositor)
meta_compositor_destroy (display->compositor);
meta_display_shutdown_x11 (display);
meta_display_shutdown_keys (display);
g_clear_object (&display->bell);