From 2ab2775743432a7f655f30a0fab8f2db438fbbca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Poisot?= Date: Sun, 7 Jun 2026 17:56:33 +0000 Subject: [PATCH] scene: make buffer sample event register syncobj use for all outputs Not just the frame pacing output. Fixes b2f6a390a490cdc423fd1fe880bf226708b22951 --- types/scene/surface.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/types/scene/surface.c b/types/scene/surface.c index 89c54a9ed..33b229955 100644 --- a/types/scene/surface.c +++ b/types/scene/surface.c @@ -161,6 +161,14 @@ static void handle_scene_buffer_output_sample( wl_container_of(listener, surface, output_sample); const struct wlr_scene_output_sample_event *event = data; struct wlr_output *output = event->output->output; + + struct wlr_linux_drm_syncobj_surface_v1_state *syncobj_surface_state = + wlr_linux_drm_syncobj_v1_get_surface_state(surface->surface); + if (syncobj_surface_state != NULL && event->release_timeline != NULL) { + wlr_linux_drm_syncobj_v1_state_add_release_point(syncobj_surface_state, + event->release_timeline, event->release_point, output->event_loop); + } + if (get_surface_frame_pacing_output(surface->surface) != output) { return; } @@ -170,13 +178,6 @@ static void handle_scene_buffer_output_sample( } else { wlr_presentation_surface_textured_on_output(surface->surface, output); } - - struct wlr_linux_drm_syncobj_surface_v1_state *syncobj_surface_state = - wlr_linux_drm_syncobj_v1_get_surface_state(surface->surface); - if (syncobj_surface_state != NULL && event->release_timeline != NULL) { - wlr_linux_drm_syncobj_v1_state_add_release_point(syncobj_surface_state, - event->release_timeline, event->release_point, output->event_loop); - } } static void handle_scene_buffer_frame_done(