From 8c14eae2c11f37f3ee4c7626640c329760f27b97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 8 Mar 2021 13:53:40 +0100 Subject: [PATCH] Fix crash after launching apps via drag-and-drop --- ...adding-windows-with-a-startup-worksp.patch | 58 +++++++++++++++++++ gnome-shell.spec | 6 +- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 0001-shell-app-Avoid-adding-windows-with-a-startup-worksp.patch diff --git a/0001-shell-app-Avoid-adding-windows-with-a-startup-worksp.patch b/0001-shell-app-Avoid-adding-windows-with-a-startup-worksp.patch new file mode 100644 index 0000000..0dcad74 --- /dev/null +++ b/0001-shell-app-Avoid-adding-windows-with-a-startup-worksp.patch @@ -0,0 +1,58 @@ +From f9f936e71a35dd9a383ba26763cf69c696d08ed4 Mon Sep 17 00:00:00 2001 +From: Sebastian Keller +Date: Sun, 7 Mar 2021 16:57:44 +0100 +Subject: [PATCH] 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: +--- + src/shell-app.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/shell-app.c b/src/shell-app.c +index 7d7b5510d..17b179cba 100644 +--- a/src/shell-app.c ++++ b/src/shell-app.c +@@ -1081,10 +1081,6 @@ _shell_app_add_window (ShellApp *app, + if (!app->running_state) + create_running_state (app); + +- if (app->started_on_workspace >= 0) +- meta_window_change_workspace_by_index (window, app->started_on_workspace, FALSE); +- app->started_on_workspace = -1; +- + app->running_state->window_sort_stale = TRUE; + app->running_state->windows = g_slist_prepend (app->running_state->windows, g_object_ref (window)); + g_signal_connect_object (window, "unmanaged", G_CALLBACK(shell_app_on_unmanaged), app, 0); +@@ -1098,6 +1094,10 @@ _shell_app_add_window (ShellApp *app, + app->running_state->interesting_windows++; + shell_app_sync_running_state (app); + ++ if (app->started_on_workspace >= 0) ++ meta_window_change_workspace_by_index (window, app->started_on_workspace, FALSE); ++ app->started_on_workspace = -1; ++ + g_object_thaw_notify (G_OBJECT (app)); + + g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0); +-- +2.30.1 + diff --git a/gnome-shell.spec b/gnome-shell.spec index ed1cddf..211a328 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -1,6 +1,6 @@ Name: gnome-shell Version: 40.0~beta -Release: 2.20210304git7a57528bd%{?dist} +Release: 3.20210304git7a57528bd%{?dist} Summary: Window management and application launching for GNOME License: GPLv2+ @@ -11,6 +11,7 @@ Source0: http://download.gnome.org/sources/gnome-shell/40/%{name}-40.beta-79-g7a Patch1: gnome-shell-favourite-apps-firefox.patch # Undo post-release version bump for snapshot Patch2: 0001-build-Lower-mutter-requirement.patch +Patch3: 0001-shell-app-Avoid-adding-windows-with-a-startup-worksp.patch %define eds_version 3.33.1 %define gnome_desktop_version 3.35.91 @@ -225,6 +226,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de %{_mandir}/man1/gnome-shell.1* %changelog +* Mon Mar 08 2021 Florian Müllner - 40.0~beta-3.20210304git40.7a57528bd +- Fix crash after launching apps via drag-and-drop + * Thu Mar 04 2021 Florian Müllner - 40.0~beta-2.20210304git40.7a57528bd - Build snapshot of current upstream