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().
This commit is contained in:
Simon Ser 2023-02-22 18:43:20 +01:00 committed by Simon Zeni
parent c2ccc0c9d4
commit 16b0afd433

View file

@ -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; int buffer_age;
if (!wlr_output_attach_render(output->wlr_output, &buffer_age)) { if (!wlr_output_attach_render(output->wlr_output, &buffer_age)) {
return 0; return 0;
@ -586,12 +591,6 @@ static int output_repaint_timer_handler(void *data) {
pixman_region32_t damage; pixman_region32_t damage;
pixman_region32_init(&damage); pixman_region32_init(&damage);
wlr_damage_ring_get_buffer_damage(&output->damage_ring, buffer_age, &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; struct timespec now;
clock_gettime(CLOCK_MONOTONIC, &now); clock_gettime(CLOCK_MONOTONIC, &now);