From 195675432b1458a2a6842ba244407ff36c4778db Mon Sep 17 00:00:00 2001 From: Consolatis <40171-Consolatis@users.noreply.gitlab.freedesktop.org> Date: Sun, 12 Apr 2026 17:18:12 +0200 Subject: [PATCH] scene/surface: schedule on frame pacing output Otherwise wlr_scene_output_send_frame_done() drops frame callbacks if only parts of a window on a non frame-pacing output is damaged. --- types/scene/surface.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/types/scene/surface.c b/types/scene/surface.c index e6ea1333a..a6958645c 100644 --- a/types/scene/surface.c +++ b/types/scene/surface.c @@ -361,10 +361,9 @@ static void handle_scene_surface_surface_commit( // the surface anyway. int lx, ly; bool enabled = wlr_scene_node_coords(&scene_buffer->node, &lx, &ly); - - if (!wl_list_empty(&surface->surface->current.frame_callback_list) && - surface->buffer->primary_output != NULL && enabled) { - wlr_output_schedule_frame(surface->buffer->primary_output->output); + struct wlr_output *output = get_surface_frame_pacing_output(surface->surface); + if (!wl_list_empty(&surface->surface->current.frame_callback_list) && output && enabled) { + wlr_output_schedule_frame(output); } }