diff options
author | Alexander Orzechowski <orzechowski.alexander@gmail.com> | 2022-09-03 16:20:39 -0400 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2022-09-05 08:24:50 +0000 |
commit | 2e06ff5688646443012f6e6e4f13dea068c6ec50 (patch) | |
tree | 3715402fd0519ea2bed169c8ae86450826c907fb | |
parent | 35d94d779c36193109b61d9fdb49617a307272a6 (diff) |
wlr_scene: Clarify surface commit frame events
-rw-r--r-- | types/scene/surface.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/types/scene/surface.c b/types/scene/surface.c index b122d210..f8bb5538 100644 --- a/types/scene/surface.c +++ b/types/scene/surface.c @@ -84,10 +84,11 @@ static void handle_scene_surface_surface_commit( set_buffer_with_surface_state(scene_buffer, surface->surface); - // Even if the surface hasn't submitted damage, schedule a new frame if - // the client has requested a wl_surface.frame callback. Check if the node - // is visible. If not, the client will never receive a frame_done event - // anyway so it doesn't make sense to schedule here. + // If the surface has requested a frame done event, honour that. The + // frame_callback_list will be populated in this case. We should only + // schedule the frame however if the node is enabled and there is an + // output intersecting, otherwise the frame done events would never reach + // the surface anyway. int lx, ly; bool enabled = wlr_scene_node_coords(&scene_buffer->node, &lx, &ly); |