[mutter] display: Dispose Stack after Compositor and X11



commit e94a0fced9104bc96951589a198eacbec50fee82
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Tue Jun 4 11:47:06 2019 +0200

    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

 src/core/display.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
---
diff --git a/src/core/display.c b/src/core/display.c
index 704ec1662..d5024e5cb 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]