aboutsummaryrefslogtreecommitdiffstats
path: root/sway/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'sway/desktop')
-rw-r--r--sway/desktop/output.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index 6c78e08d..97ea2e7c 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -515,6 +515,9 @@ int output_repaint_timer_handler(void *data) {
515 515
516 output->wlr_output->frame_pending = false; 516 output->wlr_output->frame_pending = false;
517 517
518 bool surface_needs_frame = output->surface_needs_frame;
519 output->surface_needs_frame = false;
520
518 struct sway_workspace *workspace = output->current.active_workspace; 521 struct sway_workspace *workspace = output->current.active_workspace;
519 if (workspace == NULL) { 522 if (workspace == NULL) {
520 return 0; 523 return 0;
@@ -557,6 +560,8 @@ int output_repaint_timer_handler(void *data) {
557 clock_gettime(CLOCK_MONOTONIC, &now); 560 clock_gettime(CLOCK_MONOTONIC, &now);
558 561
559 output_render(output, &now, &damage); 562 output_render(output, &now, &damage);
563 } else if (surface_needs_frame) {
564 wlr_output_schedule_frame(output->wlr_output);
560 } 565 }
561 566
562 pixman_region32_fini(&damage); 567 pixman_region32_fini(&damage);
@@ -672,6 +677,7 @@ static void damage_surface_iterator(struct sway_output *output, struct sway_view
672 wlr_output_damage_add_box(output->damage, &box); 677 wlr_output_damage_add_box(output->damage, &box);
673 } 678 }
674 679
680 output->surface_needs_frame = true;
675 wlr_output_schedule_frame(output->wlr_output); 681 wlr_output_schedule_frame(output->wlr_output);
676} 682}
677 683