summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Orzechowski <[email protected]>2022-09-03 16:20:39 -0400
committerSimon Ser <[email protected]>2022-09-05 08:24:50 +0000
commit096de5d937149d86d1fc1e724b82c49a18215a15 (patch)
treea61948a18814a82ea436d6378639f24625e978a2
parent2bb4dfef5a9baeef5fc2e9fd4e2046cf514c9ab3 (diff)
wlr_scene: Clarify surface commit frame events
-rw-r--r--surface.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/surface.c b/surface.c
index b122d21..f8bb553 100644
--- a/surface.c
+++ b/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);