From a4c7c6db097c8f493a88a1f0ef5c6f0c78f70e01 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 5 Mar 2020 13:24:46 +0100 Subject: [PATCH] output: make wlr_output_schedule_frame set output->needs_frame This way, wlr_output_schedule_frame will always be followed by a wlr_output_commit. This forces the compositor to render an extra frame before stopping the rendering loop. To test, run wleird's frame-callback [1], make sure it's the only visible client on the output and check the interval between frame events is the output's refresh period instead of zero. [1]: https://github.com/emersion/wleird/blob/master/frame-callback.c Closes: https://github.com/swaywm/wlroots/issues/2051 --- types/wlr_output.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/types/wlr_output.c b/types/wlr_output.c index 57814111..a1777fbe 100644 --- a/types/wlr_output.c +++ b/types/wlr_output.c @@ -621,6 +621,8 @@ static void schedule_frame_handle_idle_timer(void *data) { } void wlr_output_schedule_frame(struct wlr_output *output) { + wlr_output_update_needs_frame(output); + if (output->frame_pending || output->idle_frame != NULL) { return; }