From c8986d19e567bfbf46b1e954427058ef5240583a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 7 Apr 2020 08:39:10 +0000 Subject: [PATCH] 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 (cherry picked from commit 8df3b21a51b0e8dcea4a4376426880e4f3c4f837) --- 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