fix: try page-flip without tearing when the output test fails

This commit is contained in:
Ricardo Steijn 2024-07-06 22:43:02 +02:00
parent 0b0d979f1e
commit 81e67e18bb

View file

@ -303,11 +303,17 @@ static int output_repaint_timer_handler(void *data) {
pending.tearing_page_flip = true; pending.tearing_page_flip = true;
if (!wlr_output_test_state(output->wlr_output, &pending)) { if (!wlr_output_test_state(output->wlr_output, &pending)) {
output->allow_tearing = false; sway_log(SWAY_ERROR, "Output test failed on '%s', retrying without tearing page-flip",
output->wlr_output->name);
pending.tearing_page_flip = false;
if (!wlr_output_test_state(output->wlr_output, &pending)) {
wlr_output_state_finish(&pending); wlr_output_state_finish(&pending);
return 0; return 0;
} }
} }
}
if (!wlr_output_commit_state(output->wlr_output, &pending)) { if (!wlr_output_commit_state(output->wlr_output, &pending)) {
sway_log(SWAY_ERROR, "Page-flip failed on output %s", output->wlr_output->name); sway_log(SWAY_ERROR, "Page-flip failed on output %s", output->wlr_output->name);