Use buffer age when rendering

This commit is contained in:
tiosgz 2021-09-19 12:55:52 +00:00
parent fb86e3df22
commit 711fb83bda

View file

@ -160,7 +160,13 @@ output_frame_notify(struct wl_listener *listener, void *data)
struct timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
if (output->damaged == 0) {
int buffer_age;
if (!wlr_output_attach_render(wlr_output, &buffer_age)) {
wlr_log(WLR_ERROR, "Failed to attach renderer to output");
return;
}
if (output->damaged == 0 && buffer_age > 0) {
send_frame_done_to_layer(
&output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND], &now);
send_frame_done_to_layer(
@ -176,11 +182,6 @@ output_frame_notify(struct wl_listener *listener, void *data)
view, send_frame_done_to_surface, &now);
}
if (!wlr_output_attach_render(wlr_output, NULL)) {
wlr_log(WLR_ERROR, "Failed to attach renderer to output");
return;
}
if (render_cursors(wlr_output)) {
output_damage(output);
}
@ -193,11 +194,6 @@ output_frame_notify(struct wl_listener *listener, void *data)
struct wlr_renderer *renderer =
wlr_backend_get_renderer(wlr_output->backend);
if (!wlr_output_attach_render(wlr_output, NULL)) {
wlr_log(WLR_ERROR, "Failed to attach renderer to output");
return;
}
int width;
int height;
wlr_output_effective_resolution(wlr_output, &width, &height);