From 16b0afd4331dbd8ed6bb1df49e8309d05f4488dd Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 22 Feb 2023 18:43:20 +0100 Subject: [PATCH] Check for empty damage before attaching render buffer Check whether output->damage_ring.current is empty before calling wlr_output_attach_render(). Saves us from having to un-do that via wlr_output_rollback(). --- sway/desktop/output.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 4b6e9122..1b9b5e67 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -578,6 +578,11 @@ static int output_repaint_timer_handler(void *data) { } } + if (!output->wlr_output->needs_frame && + !pixman_region32_not_empty(&output->damage_ring.current)) { + return 0; + } + int buffer_age; if (!wlr_output_attach_render(output->wlr_output, &buffer_age)) { return 0; @@ -586,12 +591,6 @@ static int output_repaint_timer_handler(void *data) { pixman_region32_t damage; pixman_region32_init(&damage); wlr_damage_ring_get_buffer_damage(&output->damage_ring, buffer_age, &damage); - if (!output->wlr_output->needs_frame && - !pixman_region32_not_empty(&output->damage_ring.current)) { - pixman_region32_fini(&damage); - wlr_output_rollback(output->wlr_output); - return 0; - } struct timespec now; clock_gettime(CLOCK_MONOTONIC, &now);