gnome-shell/src
Sebastian Keller f9f936e71a shell/app: Avoid adding windows with a startup workspace twice
Changing the workspace of a window causes the window tracker to remove
and add it to the app again. If this happens from within
_shell_app_add_window() before the window has been added to the windows
list, this will cause the check that is supposed to prevent adding the
same window multiple times to fail and the window to be added twice.
The app will then be considered still running after the last window has
been closed. Then when clicking on the corresponding app icon, the shell
would attempt to switch to a NULL workspace for the closed window
instead of starting a new instance, resulting in a crash.

Changing the workspace also needs to happen after increasing the
interesting window count, because otherwise removal of the window by
the window tracker would trigger a uint underflow leading the app to be
considered running with UINT_MAX interesting windows, despite having no
windows, leading to crashes right after launching the app.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3833

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1745>
2021-03-07 16:23:08 +00:00
..
calendar-server calendar-server: Remove unused functions 2020-12-30 11:01:44 +01:00
hotplug-sniffer Stop using GSlice 2020-10-19 20:18:11 +02:00
st st/scrollview: Apply correct fade_edges_left/right effect uniforms in RTL 2021-03-02 22:02:56 +00:00
tray *: Fix spelling mistakes found by codespell 2020-08-21 18:25:09 +00:00
data-to-c.pl build: Fix the path of perl for data-to-c.pl 2015-05-22 19:03:44 +08:00
gnome-shell-extension-prefs Add small gnome-shell-extension-prefs script 2020-04-28 00:06:19 +02:00
gnome-shell-extension-tool.in shell-extension-tool: Fix typo 2019-08-27 12:16:27 +03:00
gnome-shell-perf-tool.in *: Fix spelling mistakes found by codespell 2020-08-21 18:25:09 +00:00
gnome-shell-plugin.c *: Fix spelling mistakes found by codespell 2020-08-21 18:25:09 +00:00
gnome-shell-portal-helper.c build: Don't modify typelib search path in tools 2018-08-14 17:28:03 +00:00
gtkactionmuxer.c Stop using GSlice 2020-10-19 20:18:11 +02:00
gtkactionmuxer.h Also update gtkaction* 2014-01-09 14:59:31 -05:00
gtkactionobservable.c Update copy/paste code from upstream 2013-05-13 18:34:26 -04:00
gtkactionobservable.h Update copy/paste code from upstream 2013-05-13 18:34:26 -04:00
gtkactionobserver.c Also update gtkaction* 2014-01-09 14:59:31 -05:00
gtkactionobserver.h Also update gtkaction* 2014-01-09 14:59:31 -05:00
main.c main: Move NO_AT_BRIDGE hack to mutter 2021-02-23 18:24:35 +01:00
meson.build Move screencasting into a separate service process 2020-07-31 10:51:12 +02:00
org.gtk.Application.xml Generate GDBus proxy object for org.gtk.Application 2014-11-27 10:59:55 +00:00
run-js-test.c tests: Don't initialize Clutter 2019-08-27 15:30:51 +03:00
shell-action-modes.h *: Fix spelling mistakes found by codespell 2020-08-21 18:25:09 +00:00
shell-app-cache-private.h app-cache: add ShellAppCache for GAppInfo caching 2020-03-11 18:06:15 -07:00
shell-app-cache.c Stop using GSlice 2020-10-19 20:18:11 +02:00
shell-app-private.h shell: Use MetaStartupNotification 2018-11-23 13:58:35 +01:00
shell-app-system-private.h apps: Ensure running apps override new .desktop file data 2011-09-05 17:29:41 -04:00
shell-app-system.c app-cache: add ShellAppCache for GAppInfo caching 2020-03-11 18:06:15 -07:00
shell-app-system.h shell-app-system: Cache GAppInfos around 2019-01-26 22:55:31 +01:00
shell-app-usage.c cleanup: Use g_clear_handle_id() for g_source_remove() 2019-11-22 01:45:25 +01:00
shell-app-usage.h app-usage: Remove crufty old "context"s idea 2018-11-17 12:08:33 +00:00
shell-app.c shell/app: Avoid adding windows with a startup workspace twice 2021-03-07 16:23:08 +00:00
shell-app.h shell/app: Add new get_icon() method 2020-07-01 12:42:57 +02:00
shell-blur-effect.c blur-effect: Don't use stage view when drawing off-stage 2021-02-15 13:17:08 +01:00
shell-blur-effect.h blur-effect: Use sigma value instead of blur radius 2020-02-12 11:10:38 -03:00
shell-embedded-window-private.h shell-embedded-window: Remove hacks for old and fixed Clutter bug 2012-07-13 17:28:50 -04:00
shell-embedded-window.c *: Fix spelling mistakes found by codespell 2020-08-21 18:25:09 +00:00
shell-embedded-window.h shell: Use G_DECLARE_*_TYPE macros 2015-10-15 22:58:28 +02:00
shell-global-private.h locatePointer: Add implementation in gnome-shell 2019-06-05 08:15:10 +00:00
shell-global.c shell: Drop shell_global_sync_pointer() 2021-02-14 13:57:56 +00:00
shell-global.h shell: Drop shell_global_sync_pointer() 2021-02-14 13:57:56 +00:00
shell-glsl-effect.c shell: Adapt to ClutterEffect vfunc changes 2020-12-15 15:38:43 +00:00
shell-glsl-effect.h shell: Actually make GLSLEffect an effect 2019-07-29 17:51:14 +02:00
shell-gtk-embed.c Remove ClutterAllocationFlags 2020-05-20 15:12:03 +02:00
shell-gtk-embed.h shell: Use G_DECLARE_*_TYPE macros 2015-10-15 22:58:28 +02:00
shell-invert-lightness-effect.c shell: Adapt to ClutterEffect vfunc changes 2020-12-15 15:38:43 +00:00
shell-invert-lightness-effect.h shell: Define COGL_ENABLE_EXPERIMENTAL_API and related defines globally 2014-08-07 14:49:54 -04:00
shell-keyring-prompt.c Ensure G_PARAM_STATIC_STRINGS for all properties 2019-07-30 13:58:44 +00:00
shell-keyring-prompt.h shell: Use G_DECLARE_*_TYPE macros 2015-10-15 22:58:28 +02:00
shell-mount-operation.c *: Fix spelling mistakes found by codespell 2020-08-21 18:25:09 +00:00
shell-mount-operation.h shell: Use G_DECLARE_*_TYPE macros 2015-10-15 22:58:28 +02:00
shell-network-agent.c shell/network-agent: Add method to add VPN secrets to agent response 2020-12-25 11:43:13 +01:00
shell-network-agent.h shell/network-agent: Add method to add VPN secrets to agent response 2020-12-25 11:43:13 +01:00
shell-perf-helper.c perf-helper: Remove unused atoms 2019-12-05 16:51:00 +01:00
shell-perf-log.c Stop using GSlice 2020-10-19 20:18:11 +02:00
shell-perf-log.h shell: Use G_DECLARE_*_TYPE macros 2015-10-15 22:58:28 +02:00
shell-polkit-authentication-agent.c src: Stop using g_get_current_time() 2019-08-09 19:22:18 +00:00
shell-polkit-authentication-agent.h polkit: Port to G_DECLARE_FINAL_CLASS 2018-11-06 13:05:15 -02:00
shell-screenshot.c screenshot: Fix slow audiovisual feedback on when taking screenshot 2021-02-11 18:51:40 +00:00
shell-screenshot.h shell: Make screenshot API stream based 2019-11-06 22:45:22 +00:00
shell-secure-text-buffer.c shell: Don't use g_memmove() 2019-07-19 17:43:56 +00:00
shell-secure-text-buffer.h shell: Use G_DECLARE_*_TYPE macros 2015-10-15 22:58:28 +02:00
shell-stack.c Remove ClutterAllocationFlags 2020-05-20 15:12:03 +02:00
shell-stack.h shell: Use G_DECLARE_*_TYPE macros 2015-10-15 22:58:28 +02:00
shell-tray-icon.c Ensure G_PARAM_STATIC_STRINGS for all properties 2019-07-30 13:58:44 +00:00
shell-tray-icon.h shell: Use G_DECLARE_*_TYPE macros 2015-10-15 22:58:28 +02:00
shell-tray-manager.c Stop using GSlice 2020-10-19 20:18:11 +02:00
shell-tray-manager.h shell/tray-manager: Allow to unmanage screen 2020-03-06 18:45:21 +00:00
shell-util.c shell-util: Use early-return in shell_util_get_week_start() 2021-02-07 14:46:27 +00:00
shell-util.h windowManager: Wait for X11 services using systemd 2020-07-31 13:53:31 +00:00
shell-window-tracker-private.h apps: Ensure running apps override new .desktop file data 2011-09-05 17:29:41 -04:00
shell-window-tracker.c shell/window-tracker: Tighten sandbox ID prefix check 2020-07-08 12:23:10 +02:00
shell-window-tracker.h shell: Hide/drop unused public API 2018-11-23 13:58:35 +01:00
shell-wm-private.h ui: Add InhibitShortcutsDialog 2017-08-02 11:27:42 +01:00
shell-wm.c ui: Add InhibitShortcutsDialog 2017-08-02 11:27:42 +01:00
shell-wm.h shell: Use G_DECLARE_*_TYPE macros 2015-10-15 22:58:28 +02:00