mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-22 04:45:58 +01:00
wlr_scene: Decide when to commit output damage with buffers in damage ring
We will soon support custom swapchains. In order to track output damage we should instead use the damage_ring which will hold all the buffers we are currently tracking anyway across an arbitrary amount of swapchains.
This commit is contained in:
parent
8220184a72
commit
239354d644
1 changed files with 10 additions and 1 deletions
|
@ -1294,7 +1294,16 @@ static void scene_output_handle_commit(struct wl_listener *listener, void *data)
|
|||
// will be acknowledged by the backend so we don't need to keep track of it
|
||||
// anymore
|
||||
if (state->committed & WLR_OUTPUT_STATE_DAMAGE) {
|
||||
if (wlr_swapchain_has_buffer(scene_output->output->swapchain, state->buffer)) {
|
||||
bool tracking_buffer = false;
|
||||
struct wlr_damage_ring_buffer *buffer;
|
||||
wl_list_for_each(buffer, &scene_output->damage_ring.buffers, link) {
|
||||
if (buffer->buffer == state->buffer) {
|
||||
tracking_buffer = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (tracking_buffer) {
|
||||
pixman_region32_subtract(&scene_output->pending_commit_damage,
|
||||
&scene_output->pending_commit_damage, &state->damage);
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue