Backport upstream patch to fix a compositor crash (#2120470)
This commit is contained in:
parent
eff03142bf
commit
01bfa2e36f
76
2592.patch
Normal file
76
2592.patch
Normal file
@ -0,0 +1,76 @@
|
||||
From ed516dde899f87b19f3dd0ed4613b692f778d437 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Tue, 23 Aug 2022 21:56:02 +0200
|
||||
Subject: [PATCH] wayland: Add destruction listener to activation token surface
|
||||
|
||||
In the timespan between an activation token being created and the
|
||||
token being used by the activated application, the surface that started
|
||||
the activation request may end up destroyed/disposed.
|
||||
|
||||
In that case, the token would be left with a stale surface pointer,
|
||||
maybe causing crashes later on. Set up a destroy notification listener
|
||||
so that we do know to unset the token surface if that situation arises,
|
||||
this will result in Mutter not considering the token activatable, thus
|
||||
maybe issuing the "Application needs attention" notification if the
|
||||
activated surface did not immediately get focus. In any case this is
|
||||
better than a compositor crash.
|
||||
|
||||
A typical situation where this may happen is "Open With..." dialogs,
|
||||
since those don't live long after launching the application.
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2390
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2592>
|
||||
---
|
||||
src/wayland/meta-wayland-activation.c | 15 +++++++++++++++
|
||||
1 file changed, 15 insertions(+)
|
||||
|
||||
diff --git a/src/wayland/meta-wayland-activation.c b/src/wayland/meta-wayland-activation.c
|
||||
index 73faa19142..b7035ab5ce 100644
|
||||
--- a/src/wayland/meta-wayland-activation.c
|
||||
+++ b/src/wayland/meta-wayland-activation.c
|
||||
@@ -47,6 +47,7 @@ struct _MetaXdgActivationToken
|
||||
MetaWaylandSeat *seat;
|
||||
MetaWaylandActivation *activation;
|
||||
MetaStartupSequence *sequence;
|
||||
+ struct wl_listener surface_listener;
|
||||
char *app_id;
|
||||
char *token;
|
||||
uint32_t serial;
|
||||
@@ -94,6 +95,8 @@ token_set_surface (struct wl_client *client,
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (surface_resource);
|
||||
|
||||
token->surface = surface;
|
||||
+ wl_resource_add_destroy_listener (surface_resource,
|
||||
+ &token->surface_listener);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -216,6 +219,17 @@ meta_xdg_activation_token_free (MetaXdgActivationToken *token)
|
||||
g_free (token);
|
||||
}
|
||||
|
||||
+static void
|
||||
+token_handle_surface_destroy (struct wl_listener *listener,
|
||||
+ void *data)
|
||||
+{
|
||||
+ MetaXdgActivationToken *token = wl_container_of (listener, token,
|
||||
+ surface_listener);
|
||||
+
|
||||
+ token->surface = NULL;
|
||||
+ wl_list_remove (&token->surface_listener.link);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
meta_wayland_activation_token_create_new_resource (MetaWaylandActivation *activation,
|
||||
struct wl_client *client,
|
||||
@@ -237,6 +251,7 @@ meta_wayland_activation_token_create_new_resource (MetaWaylandActivation *activa
|
||||
wl_resource_set_user_data (token_resource, token);
|
||||
wl_list_insert (&activation->token_list,
|
||||
wl_resource_get_link (token_resource));
|
||||
+ token->surface_listener.notify = token_handle_surface_destroy;
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
GitLab
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
Name: mutter
|
||||
Version: 43~beta
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: Window and compositing manager based on Clutter
|
||||
|
||||
License: GPLv2+
|
||||
@ -28,6 +28,10 @@ Patch2: mutter-42.alpha-disable-tegra.patch
|
||||
|
||||
Patch3: 0001-build-Add-missing-include.patch
|
||||
|
||||
# Backported from upstream
|
||||
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2592
|
||||
Patch4: 2592.patch
|
||||
|
||||
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0
|
||||
BuildRequires: pkgconfig(sm)
|
||||
BuildRequires: pkgconfig(libwacom)
|
||||
@ -171,6 +175,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
|
||||
%{_datadir}/mutter-%{mutter_api_version}/tests
|
||||
|
||||
%changelog
|
||||
* Wed Aug 24 2022 Kalev Lember <klember@redhat.com> - 43~beta-2
|
||||
- Backport upstream patch to fix a compositor crash (#2120470)
|
||||
|
||||
* Wed Aug 10 2022 Florian Müllner <fmuellner@redhat.com> - 43~beta-1
|
||||
- Update to 43.beta
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user