[mutter] window: Check aliveness a bit less aggressively



commit 8df3b21a51b0e8dcea4a4376426880e4f3c4f837
Author: Jonas Ådahl <jadahl gmail com>
Date:   Tue Apr 7 10:39:10 2020 +0200

    window: Check aliveness a bit less aggressively
    
    Currently we check whether a window is alive everytime it's focused.
    This means that an application that doesn't respond to the check-alive
    event during startup always showing the "application froze" dialog,
    without the user ever trying to interact with it.
    
    An example where this tends to to happen is with games, and for this
    particular scenario, it's purely an annoyance, as I never tried to
    interact with the game window in the first place, so I don't care that
    it's not responding - it's loading.
    
    To avoid these unnecessary particular "app-is-frozen" popups, remove the
    alive check from the focus function, and instead move it back to the
    "meta_window_activate_full()" call. To also trigger it slightly more
    often, also add it to the path that triggers the window focus when a
    user actively clicks on the window.
    
    This means that we currently check whether a window is alive on:
    
      * Any time the window is activated. This means e.g. alt-tab or
        selecting the window in the overview.
      * The user clicks on the window.
    
    Note that the second only works for an already focused window on
    Wayland, as on X11, we don't refocus it. This particular case isn't
    changed with this commit, as we didn't call meta_window_focus() to begin
    with here.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1182

 src/core/window.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
---
diff --git a/src/core/window.c b/src/core/window.c
index 3356fc790..ea721f794 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -3751,6 +3751,8 @@ meta_window_activate_full (MetaWindow     *window,
     meta_window_focus (window, timestamp);
   else
     meta_workspace_activate_with_focus (window->workspace, window, timestamp);
+
+  meta_window_check_alive (window, timestamp);
 }
 
 /* This function exists since most of the functionality in window_activate
@@ -4790,8 +4792,6 @@ meta_window_focus (MetaWindow  *window,
       return;
     }
 
-  meta_window_check_alive (window, timestamp);
-
   META_WINDOW_GET_CLASS (window)->focus (window, timestamp);
 
   if (window->display->event_route == META_EVENT_ROUTE_NORMAL)
@@ -8349,6 +8349,7 @@ meta_window_handle_ungrabbed_event (MetaWindow         *window,
                   "Focusing %s due to button %u press (display.c)\n",
                   window->desc, button);
       meta_window_focus (window, event->any.time);
+      meta_window_check_alive (window, event->any.time);
     }
   else
     /* However, do allow terminals to lose focus due to new


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