public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Adam Williamson <awilliam@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/mutter] rawhide: Backport MRs #5143 and #5169 to fix gnome-remote-desktop crashes
Date: Sat, 11 Jul 2026 20:20:42 GMT [thread overview]
Message-ID: <178380124255.1.16968707928581589504.rpms-mutter-2b84bd21ae22@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/mutter
Branch : rawhide
Commit : 2b84bd21ae227691688ac6ff6b8642bfd5b27f7f
Author : Adam Williamson <awilliam@redhat.com>
Date : 2026-07-11T13:20:18-07:00
Stats : +234/-0 in 3 file(s)
URL : https://src.fedoraproject.org/rpms/mutter/c/2b84bd21ae227691688ac6ff6b8642bfd5b27f7f?branch=rawhide
Log:
Backport MRs #5143 and #5169 to fix gnome-remote-desktop crashes
---
diff --git a/5143.patch b/5143.patch
new file mode 100644
index 0000000..e20c547
--- /dev/null
+++ b/5143.patch
@@ -0,0 +1,42 @@
+From 8abdae0b00b035cca8fb47d6ff9e3f411c2f0f20 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
+Date: Mon, 29 Jun 2026 15:59:14 +0200
+Subject: [PATCH] stream-source/virtual: Don't assume there is a cursor
+ renderer
+
+There might not be one, depending on various circumstances, so add a
+check.
+
+Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5143>
+---
+ src/backends/meta-stream-source-virtual.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/backends/meta-stream-source-virtual.c b/src/backends/meta-stream-source-virtual.c
+index 9245561e563..a54f84269b3 100644
+--- a/src/backends/meta-stream-source-virtual.c
++++ b/src/backends/meta-stream-source-virtual.c
+@@ -577,11 +577,18 @@ meta_stream_source_virtual_set_cursor_metadata (MetaStreamSource *source,
+ MetaStreamSourceVirtual *source_virtual =
+ META_STREAM_SOURCE_VIRTUAL (source);
+ MetaBackend *backend = backend_from_source (source);
+- MetaCursorRenderer *cursor_renderer =
+- meta_backend_get_cursor_renderer (backend);
++ MetaCursorRenderer *cursor_renderer;
+ ClutterCursor *cursor;
+ int x, y;
+
++ cursor_renderer = meta_backend_get_cursor_renderer (backend);
++ if (!cursor_renderer)
++ {
++ source_virtual->last_cursor_matadata.set = FALSE;
++ meta_stream_source_unset_cursor_metadata (source, spa_meta_cursor);
++ return;
++ }
++
+ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
+
+ if (!should_cursor_metadata_be_set (source_virtual))
+--
+GitLab
+
diff --git a/5169.patch b/5169.patch
new file mode 100644
index 0000000..828cc76
--- /dev/null
+++ b/5169.patch
@@ -0,0 +1,184 @@
+From 547f1db2838dc09a189c645d6d679191562092e5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
+Date: Wed, 8 Jul 2026 15:01:36 +0200
+Subject: [PATCH] screen-cast-stream-source: Handle NULL cursor renderer
+
+meta_backend_get_cursor_renderer may return NULL now.
+
+Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5169>
+---
+ src/backends/meta-stream-source-area.c | 17 +++++++++++++----
+ src/backends/meta-stream-source-monitor.c | 17 +++++++++++++----
+ src/backends/meta-stream-source-virtual.c | 6 ++++--
+ src/backends/meta-stream-source-window.c | 18 ++++++++++++++----
+ 4 files changed, 44 insertions(+), 14 deletions(-)
+
+diff --git a/src/backends/meta-stream-source-area.c b/src/backends/meta-stream-source-area.c
+index f1bfc247712..79f06c84c85 100644
+--- a/src/backends/meta-stream-source-area.c
++++ b/src/backends/meta-stream-source-area.c
+@@ -109,12 +109,14 @@ is_cursor_in_stream (MetaStreamSourceArea *source_area)
+ meta_backend_get_cursor_renderer (backend);
+ MtkRectangle area;
+ graphene_rect_t area_rect;
+- ClutterCursor *cursor;
++ ClutterCursor *cursor = NULL;
+
+ meta_stream_area_get_area (area_stream, &area);
+ area_rect = mtk_rectangle_to_graphene_rect (&area);
+
+- cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++ if (cursor_renderer)
++ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++
+ if (cursor)
+ {
+ graphene_rect_t cursor_rect;
+@@ -627,11 +629,18 @@ meta_stream_source_area_set_cursor_metadata (MetaStreamSource *source,
+ MetaStream *stream = meta_stream_source_get_stream (source);
+ MetaStreamArea *area_stream = META_STREAM_AREA (stream);
+ MetaBackend *backend = get_backend (source_area);
+- MetaCursorRenderer *cursor_renderer =
+- meta_backend_get_cursor_renderer (backend);
++ MetaCursorRenderer *cursor_renderer;
+ ClutterCursor *cursor;
+ int x, y;
+
++ cursor_renderer = meta_backend_get_cursor_renderer (backend);
++ if (!cursor_renderer)
++ {
++ source_area->last_cursor_matadata.set = FALSE;
++ meta_stream_source_unset_cursor_metadata (source, spa_meta_cursor);
++ return;
++ }
++
+ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
+
+ if (!should_cursor_metadata_be_set (source_area))
+diff --git a/src/backends/meta-stream-source-monitor.c b/src/backends/meta-stream-source-monitor.c
+index 0110932c884..5520a5efe77 100644
+--- a/src/backends/meta-stream-source-monitor.c
++++ b/src/backends/meta-stream-source-monitor.c
+@@ -241,7 +241,7 @@ is_cursor_in_stream (MetaStreamSourceMonitor *source_monitor)
+ MetaLogicalMonitor *logical_monitor;
+ MtkRectangle logical_monitor_layout;
+ graphene_rect_t logical_monitor_rect;
+- ClutterCursor *cursor;
++ ClutterCursor *cursor = NULL;
+
+ monitor = get_monitor (source_monitor);
+ logical_monitor = meta_monitor_get_logical_monitor (monitor);
+@@ -249,7 +249,9 @@ is_cursor_in_stream (MetaStreamSourceMonitor *source_monitor)
+ logical_monitor_rect =
+ mtk_rectangle_to_graphene_rect (&logical_monitor_layout);
+
+- cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++ if (cursor_renderer)
++ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++
+ if (cursor)
+ {
+ graphene_rect_t cursor_rect;
+@@ -973,11 +975,18 @@ meta_stream_source_monitor_set_cursor_metadata (MetaStreamSource *source,
+ {
+ MetaStreamSourceMonitor *source_monitor = META_STREAM_SOURCE_MONITOR (source);
+ MetaBackend *backend = get_backend (source_monitor);
+- MetaCursorRenderer *cursor_renderer =
+- meta_backend_get_cursor_renderer (backend);
++ MetaCursorRenderer *cursor_renderer;
+ ClutterCursor *cursor;
+ int x, y;
+
++ cursor_renderer = meta_backend_get_cursor_renderer (backend);
++ if (!cursor_renderer)
++ {
++ source_monitor->last_cursor_matadata.set = FALSE;
++ meta_stream_source_unset_cursor_metadata (source, spa_meta_cursor);
++ return;
++ }
++
+ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
+
+ if (!should_cursor_metadata_be_set (source_monitor))
+diff --git a/src/backends/meta-stream-source-virtual.c b/src/backends/meta-stream-source-virtual.c
+index a54f84269b3..c6beb9c6d36 100644
+--- a/src/backends/meta-stream-source-virtual.c
++++ b/src/backends/meta-stream-source-virtual.c
+@@ -475,12 +475,14 @@ is_cursor_in_stream (MetaStreamSourceVirtual *source_virtual)
+ ClutterStageView *stage_view = view_from_source (source);
+ MtkRectangle view_layout;
+ graphene_rect_t view_rect;
+- ClutterCursor *cursor;
++ ClutterCursor *cursor = NULL;
+
+ clutter_stage_view_get_layout (stage_view, &view_layout);
+ view_rect = mtk_rectangle_to_graphene_rect (&view_layout);
+
+- cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++ if (cursor_renderer)
++ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++
+ if (cursor)
+ {
+ graphene_rect_t cursor_rect;
+diff --git a/src/backends/meta-stream-source-window.c b/src/backends/meta-stream-source-window.c
+index 0d92f88d3f7..a223afecfc1 100644
+--- a/src/backends/meta-stream-source-window.c
++++ b/src/backends/meta-stream-source-window.c
+@@ -139,6 +139,9 @@ maybe_draw_cursor_sprite (MetaStreamSourceWindow *source_window,
+ int hotspot_x, hotspot_y;
+ cairo_t *cr;
+
++ if (!cursor_renderer)
++ return;
++
+ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
+ if (!cursor)
+ return;
+@@ -261,6 +264,9 @@ maybe_blit_cursor_sprite (MetaStreamSourceWindow *source_window,
+ int hotspot_x, hotspot_y;
+ float x, y;
+
++ if (!cursor_renderer)
++ return;
++
+ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
+ if (!cursor)
+ return;
+@@ -702,11 +708,13 @@ meta_stream_source_window_is_cursor_metadata_valid (MetaStreamSource *source)
+ meta_backend_get_cursor_renderer (backend);
+ MetaCursorTracker *cursor_tracker =
+ meta_backend_get_cursor_tracker (backend);
+- ClutterCursor *cursor;
++ ClutterCursor *cursor = NULL;
+ graphene_point_t cursor_position;
+ graphene_point_t relative_cursor_position;
+
+- cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++ if (cursor_renderer)
++ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++
+ meta_cursor_tracker_get_pointer (cursor_tracker, &cursor_position, NULL);
+
+ if (meta_cursor_tracker_get_pointer_visible (cursor_tracker) &&
+@@ -748,13 +756,15 @@ meta_stream_source_window_set_cursor_metadata (MetaStreamSource *source,
+ MetaCursorTracker *cursor_tracker =
+ meta_backend_get_cursor_tracker (backend);
+ MetaScreenCastWindow *screen_cast_window = source_window->screen_cast_window;
+- ClutterCursor *cursor;
++ ClutterCursor *cursor = NULL;
+ graphene_point_t cursor_position;
+ float view_scale;
+ graphene_point_t relative_cursor_position;
+ int x, y;
+
+- cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++ if (cursor_renderer)
++ cursor = meta_cursor_renderer_get_cursor (cursor_renderer);
++
+ meta_cursor_tracker_get_pointer (cursor_tracker, &cursor_position, NULL);
+
+ if (!meta_cursor_tracker_get_pointer_visible (cursor_tracker) ||
+--
+GitLab
+
diff --git a/mutter.spec b/mutter.spec
index eaf9111..e1922d3 100644
--- a/mutter.spec
+++ b/mutter.spec
@@ -25,6 +25,14 @@ License: GPL-2.0-or-later
URL: http://www.gnome.org
Source0: http://download.gnome.org/sources/%{name}/%{gnome_major_version}/%{name}-%{gnome_tarball_version}.tar.xz
+# Fix crashes in gnome-remote-desktop
+# https://gitlab.gnome.org/GNOME/mutter/-/work_items/4907
+# Two separate fixes are needed
+# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5143
+Patch: 5143.patch
+# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5169
+Patch: 5169.patch
+
%gnome_check_version
BuildRequires: cvt
reply other threads:[~2026-07-11 20:20 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178380124255.1.16968707928581589504.rpms-mutter-2b84bd21ae22@fedoraproject.org \
--to=awilliam@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox