Do not flush damage if swapping buffers failed
This should solve issues with multiple outputs on DRM backend.
This commit is contained in:
parent
7881d039b6
commit
20e6861021
|
@ -210,7 +210,7 @@ static bool wlr_drm_connector_swap_buffers(struct wlr_output *output) {
|
||||||
|
|
||||||
if (conn->pageflip_pending) {
|
if (conn->pageflip_pending) {
|
||||||
wlr_log(L_ERROR, "Skipping pageflip");
|
wlr_log(L_ERROR, "Skipping pageflip");
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drm->iface->crtc_pageflip(drm, conn, crtc, fb_id, NULL)) {
|
if (drm->iface->crtc_pageflip(drm, conn, crtc, fb_id, NULL)) {
|
||||||
|
|
|
@ -387,7 +387,9 @@ static void render_output(struct roots_output *output) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int buffer_age = -1;
|
int buffer_age = -1;
|
||||||
wlr_output_make_current(wlr_output, &buffer_age);
|
if (!wlr_output_make_current(wlr_output, &buffer_age)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int width, height;
|
int width, height;
|
||||||
output_get_transformed_size(output->wlr_output, &width, &height);
|
output_get_transformed_size(output->wlr_output, &width, &height);
|
||||||
|
@ -482,7 +484,9 @@ static void render_output(struct roots_output *output) {
|
||||||
renderer_end:
|
renderer_end:
|
||||||
wlr_renderer_scissor(output->desktop->server->renderer, NULL);
|
wlr_renderer_scissor(output->desktop->server->renderer, NULL);
|
||||||
wlr_renderer_end(server->renderer);
|
wlr_renderer_end(server->renderer);
|
||||||
wlr_output_swap_buffers(wlr_output, &now, &damage);
|
if (!wlr_output_swap_buffers(wlr_output, &now, &damage)) {
|
||||||
|
goto damage_finish;
|
||||||
|
}
|
||||||
// same as decrementing, but works on unsigned integers
|
// same as decrementing, but works on unsigned integers
|
||||||
output->previous_damage_idx += ROOTS_OUTPUT_PREVIOUS_DAMAGE_LEN - 1;
|
output->previous_damage_idx += ROOTS_OUTPUT_PREVIOUS_DAMAGE_LEN - 1;
|
||||||
output->previous_damage_idx %= ROOTS_OUTPUT_PREVIOUS_DAMAGE_LEN;
|
output->previous_damage_idx %= ROOTS_OUTPUT_PREVIOUS_DAMAGE_LEN;
|
||||||
|
|
Loading…
Reference in New Issue