[gnome-shell/wip/carlosg/shell-app-ignore-popups] shell: Ignore non-toplevels for ShellWindowTracker::tracked-windows-changed



commit 481d9ff4ceec4097ac27987b928ad2be88384f2c
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Jul 19 18:17:54 2019 +0200

    shell: Ignore non-toplevels for ShellWindowTracker::tracked-windows-changed
    
    Popups and other override-redirect windows are meaningless to everything
    that depends on the ShellWindowTracker. Ignoring those windows will result
    in less ShellApp::windows-changed signal emissions, and less activity in
    the AppMenuButton and everything else that depends on them.
    
    Reduces gnome-shell CPU activity while typing on the Epiphany addressbar,
    as the pop up animation there results in a number of xdg_popup being
    created and destroyed.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/642
    https://gitlab.gnome.org/GNOME/mutter/issues/556

 src/shell-window-tracker.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/src/shell-window-tracker.c b/src/shell-window-tracker.c
index 487bc9b29..0ffcc4e65 100644
--- a/src/shell-window-tracker.c
+++ b/src/shell-window-tracker.c
@@ -535,12 +535,16 @@ track_window (ShellWindowTracker *self,
 
 static void
 shell_window_tracker_on_window_added (MetaWorkspace   *workspace,
-                                   MetaWindow      *window,
-                                   gpointer         user_data)
+                                      MetaWindow      *window,
+                                      gpointer         user_data)
 {
   ShellWindowTracker *self = SHELL_WINDOW_TRACKER (user_data);
+  MetaWindowType window_type = meta_window_get_window_type (window);
 
-  track_window (self, window);
+  if (window_type == META_WINDOW_NORMAL ||
+      window_type == META_WINDOW_DIALOG ||
+      window_type == META_WINDOW_MODAL_DIALOG)
+    track_window (self, window);
 }
 
 static void


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