[mutter] Unmanage compositor and windows when closing display



commit 937a9853cde63cb826ef9d7997ebec92531b5240
Author: Jonas Ådahl <jadahl gmail com>
Date:   Fri Jun 29 12:44:17 2018 +0200

    Unmanage compositor and windows when closing display
    
    Instead of unmanaging when closing the display, which is closed when
    closing the screen, unmanage them directly from meta_display_close().
    
    https://bugzilla.gnome.org/show_bug.cgi?id=759538

 src/core/display-private.h | 5 ++---
 src/core/display.c         | 9 ++++++---
 src/core/screen.c          | 4 ----
 3 files changed, 8 insertions(+), 10 deletions(-)
---
diff --git a/src/core/display-private.h b/src/core/display-private.h
index 9a52c4af9..88c895575 100644
--- a/src/core/display-private.h
+++ b/src/core/display-private.h
@@ -292,9 +292,8 @@ gboolean      meta_display_open                (void);
 void          meta_display_close               (MetaDisplay *display,
                                                 guint32      timestamp);
 
-void          meta_display_unmanage_windows_for_screen (MetaDisplay *display,
-                                                        MetaScreen  *screen,
-                                                        guint32      timestamp);
+void meta_display_unmanage_windows (MetaDisplay *display,
+                                    guint32      timestamp);
 
 /* Utility function to compare the stacking of two windows */
 int           meta_display_stack_cmp           (const void *a,
diff --git a/src/core/display.c b/src/core/display.c
index b8ecafbf7..64442b659 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -981,6 +981,10 @@ meta_display_close (MetaDisplay *display,
 
   display->closing += 1;
 
+  meta_compositor_unmanage (display->compositor);
+
+  meta_display_unmanage_windows (display, timestamp);
+
   meta_prefs_remove_listener (prefs_changed_callback, display);
 
   meta_display_remove_autoraise_callback (display);
@@ -2632,9 +2636,8 @@ meta_display_unmanage_screen (MetaDisplay *display,
 }
 
 void
-meta_display_unmanage_windows_for_screen (MetaDisplay *display,
-                                          MetaScreen  *screen,
-                                          guint32      timestamp)
+meta_display_unmanage_windows (MetaDisplay *display,
+                               guint32      timestamp)
 {
   GSList *tmp;
   GSList *winlist;
diff --git a/src/core/screen.c b/src/core/screen.c
index e32dfe7cc..26bae29fe 100644
--- a/src/core/screen.c
+++ b/src/core/screen.c
@@ -797,10 +797,6 @@ meta_screen_free (MetaScreen *screen,
 
   screen->closing += 1;
 
-  meta_compositor_unmanage (screen->display->compositor);
-
-  meta_display_unmanage_windows_for_screen (display, screen, timestamp);
-
   meta_prefs_remove_listener (prefs_changed_callback, screen);
 
   meta_screen_ungrab_keys (screen);


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