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
|
// will be acknowledged by the backend so we don't need to keep track of it
|
||||||
// anymore
|
// anymore
|
||||||
if (state->committed & WLR_OUTPUT_STATE_DAMAGE) {
|
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,
|
pixman_region32_subtract(&scene_output->pending_commit_damage,
|
||||||
&scene_output->pending_commit_damage, &state->damage);
|
&scene_output->pending_commit_damage, &state->damage);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue