From 2fdb1ac8982d7c99a1eafb7fffef371324e0719e Mon Sep 17 00:00:00 2001 From: Aleksey Samoilov Date: Sat, 18 Jul 2026 12:23:36 +0400 Subject: [PATCH 1/3] Fix assertion in meta_input_settings_refresh --- src/core/display.c | 6 ++++-- src/core/events.c | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/display.c b/src/core/display.c index 552cdab75..9512bc970 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -1000,7 +1000,8 @@ meta_display_open (void) display->sound_player = g_object_new (META_TYPE_SOUND_PLAYER, NULL); - meta_input_settings_refresh (meta_backend_get_input_settings (backend)); + if (meta_backend_get_input_settings (backend)) + meta_input_settings_refresh (meta_backend_get_input_settings (backend)); /* Done opening new display */ display->display_opening = FALSE; @@ -3061,7 +3062,8 @@ meta_display_get_pad_action_label (MetaDisplay *display, /* First, lookup the action, as imposed by settings */ settings = meta_backend_get_input_settings (meta_get_backend ()); - label = meta_input_settings_get_pad_action_label (settings, pad, action_type, action_number); + if (settings) + label = meta_input_settings_get_pad_action_label (settings, pad, action_type, action_number); if (label) return label; diff --git a/src/core/events.c b/src/core/events.c index 1ae1e933e..8dc6bd2ed 100644 --- a/src/core/events.c +++ b/src/core/events.c @@ -265,6 +265,7 @@ meta_display_handle_event (MetaDisplay *display, handle_pad_event = !display->current_pad_osd || is_mode_switch; if (handle_pad_event && + meta_backend_get_input_settings (backend) && meta_input_settings_handle_pad_event (meta_backend_get_input_settings (backend), event)) { From 92bd85f97a2d40bbc1740d02d8aa69c3060c2bd2 Mon Sep 17 00:00:00 2001 From: Aleksey Samoilov Date: Sat, 18 Jul 2026 12:30:57 +0400 Subject: [PATCH 2/3] Fix assertion in meta_x11_get_stage_window --- src/backends/x11/meta-backend-x11.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backends/x11/meta-backend-x11.c b/src/backends/x11/meta-backend-x11.c index d6819dfd6..c1b019469 100644 --- a/src/backends/x11/meta-backend-x11.c +++ b/src/backends/x11/meta-backend-x11.c @@ -889,6 +889,10 @@ Window meta_backend_x11_get_xwindow (MetaBackendX11 *x11) { ClutterActor *stage = meta_backend_get_stage (META_BACKEND (x11)); + + if (!stage || !CLUTTER_IS_STAGE (stage)) + return None; + return meta_x11_get_stage_window (CLUTTER_STAGE (stage)); } From 67ba2f505424605aa397d1ec5b3982ebdf5e35c9 Mon Sep 17 00:00:00 2001 From: Aleksey Samoilov Date: Sat, 18 Jul 2026 15:14:23 +0400 Subject: [PATCH 3/3] Fix cursor rendering issue in nested backend For offscreen framebuffers (used by the nested X11 backend), the framebuffer is never cleared between frames. Stale content from previous frames (e.g., cursor overlay images) accumulates and creates a trail effect. Clear the offscreen before painting to prevent this. --- src/backends/meta-cursor-renderer.c | 2 -- src/backends/meta-cursor-tracker.c | 2 -- src/backends/meta-stage.c | 8 ++++++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/backends/meta-cursor-renderer.c b/src/backends/meta-cursor-renderer.c index 910eb94ad..8dec9101d 100644 --- a/src/backends/meta-cursor-renderer.c +++ b/src/backends/meta-cursor-renderer.c @@ -307,8 +307,6 @@ meta_cursor_renderer_set_position (MetaCursorRenderer *renderer, { MetaCursorRendererPrivate *priv = meta_cursor_renderer_get_instance_private (renderer); - g_assert (meta_is_wayland_compositor ()); - priv->current_x = x; priv->current_y = y; diff --git a/src/backends/meta-cursor-tracker.c b/src/backends/meta-cursor-tracker.c index b37697280..fcf69aa5a 100644 --- a/src/backends/meta-cursor-tracker.c +++ b/src/backends/meta-cursor-tracker.c @@ -374,8 +374,6 @@ meta_cursor_tracker_update_position (MetaCursorTracker *tracker, MetaCursorRenderer *cursor_renderer = meta_backend_get_cursor_renderer (backend); - g_assert (meta_is_wayland_compositor ()); - meta_cursor_renderer_set_position (cursor_renderer, new_x, new_y); g_signal_emit (tracker, signals[CURSOR_MOVED], 0, new_x, new_y); diff --git a/src/backends/meta-stage.c b/src/backends/meta-stage.c index 92418331e..5acae900c 100644 --- a/src/backends/meta-stage.c +++ b/src/backends/meta-stage.c @@ -230,6 +230,14 @@ meta_stage_paint_view (ClutterStage *stage, notify_watchers_for_mode (meta_stage, view, NULL, META_STAGE_WATCH_BEFORE_PAINT); + { + CoglFramebuffer *framebuffer = clutter_stage_view_get_framebuffer (view); + + if (framebuffer && !cogl_is_onscreen (framebuffer)) + cogl_framebuffer_clear4f (framebuffer, COGL_BUFFER_BIT_COLOR, + 0.0f, 0.0f, 0.0f, 1.0f); + } + CLUTTER_STAGE_CLASS (meta_stage_parent_class)->paint_view (stage, view, redraw_clip);