aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2022-03-19 13:58:16 +0100
committerKirill Primak <vyivel@eclair.cafe>2022-05-10 16:37:21 +0000
commit7b7562eb658f180ddb8c712803d8c646613a86c3 (patch)
tree34079eeca7d3363409151ae30f37c5ecd29fd3e7
parent8b0d4947cc77907f010a69bb9cd212a456cfdf08 (diff)
backend/headless: allow variable refresh rate
Instead of waking up each 16ms to emit a frame event, arm the timer when the output is committed. This allows the headless backend to idle when nothing changes on screen, and behaves similarly to the other backends.
-rw-r--r--backend/headless/output.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/backend/headless/output.c b/backend/headless/output.c
index f03d6ee0..10de845f 100644
--- a/backend/headless/output.c
+++ b/backend/headless/output.c
@@ -70,6 +70,8 @@ static bool output_commit(struct wlr_output *wlr_output) {
wlr_output_send_present(wlr_output, &present_event);
}
+ wl_event_source_timer_update(output->frame_timer, output->frame_delay);
+
return true;
}
@@ -93,7 +95,6 @@ bool wlr_output_is_headless(struct wlr_output *wlr_output) {
static int signal_frame(void *data) {
struct wlr_headless_output *output = data;
wlr_output_send_frame(&output->wlr_output);
- wl_event_source_timer_update(output->frame_timer, output->frame_delay);
return 0;
}