@ -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 ) ;