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);