diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c index 0f8bb7ef..5388dbff 100644 --- a/libweston/backend-drm/drm.c +++ b/libweston/backend-drm/drm.c @@ -415,9 +415,6 @@ drm_output_render(struct drm_output_state *state, pixman_region32_t *damage) scanout_state->zpos = scanout_plane->zpos_min; - pixman_region32_subtract(&c->primary_plane.damage, - &c->primary_plane.damage, damage); - /* Don't bother calculating plane damage if the plane doesn't support it */ if (damage_info->prop_id == 0) return; diff --git a/libweston/backend-headless/headless.c b/libweston/backend-headless/headless.c index 9ddfa402..20644cc8 100644 --- a/libweston/backend-headless/headless.c +++ b/libweston/backend-headless/headless.c @@ -167,9 +167,6 @@ headless_output_repaint(struct weston_output *output_base, ec->renderer->repaint_output(&output->base, damage, output->renderbuffer); - pixman_region32_subtract(&ec->primary_plane.damage, - &ec->primary_plane.damage, damage); - wl_event_source_timer_update(output->finish_frame_timer, 16); return 0; diff --git a/libweston/backend-pipewire/pipewire.c b/libweston/backend-pipewire/pipewire.c index 93ac835c..b5e95c42 100644 --- a/libweston/backend-pipewire/pipewire.c +++ b/libweston/backend-pipewire/pipewire.c @@ -789,8 +789,6 @@ pipewire_output_repaint(struct weston_output *base, pixman_region32_t *damage) pipewire_submit_buffer(output, buffer); - pixman_region32_subtract(&ec->primary_plane.damage, - &ec->primary_plane.damage, damage); out: pipewire_output_arm_timer(output); diff --git a/libweston/backend-rdp/rdp.c b/libweston/backend-rdp/rdp.c index 92ac7100..c6715f4d 100644 --- a/libweston/backend-rdp/rdp.c +++ b/libweston/backend-rdp/rdp.c @@ -317,9 +317,6 @@ rdp_output_repaint(struct weston_output *output_base, pixman_region32_t *damage) pixman_region32_fini(&transformed_damage); } - pixman_region32_subtract(&ec->primary_plane.damage, - &ec->primary_plane.damage, damage); - wl_event_source_timer_update(output->finish_frame_timer, next_frame_delta); return 0; } diff --git a/libweston/backend-vnc/vnc.c b/libweston/backend-vnc/vnc.c index fc1c1275..97583877 100644 --- a/libweston/backend-vnc/vnc.c +++ b/libweston/backend-vnc/vnc.c @@ -957,8 +957,6 @@ vnc_output_repaint(struct weston_output *base, pixman_region32_t *damage) if (pixman_region32_not_empty(damage)) { vnc_update_buffer(output->display, damage); - pixman_region32_subtract(&ec->primary_plane.damage, - &ec->primary_plane.damage, damage); } /* diff --git a/libweston/backend-wayland/wayland.c b/libweston/backend-wayland/wayland.c index 84287283..2fa11972 100644 --- a/libweston/backend-wayland/wayland.c +++ b/libweston/backend-wayland/wayland.c @@ -515,8 +515,6 @@ wayland_output_repaint_gl(struct weston_output *output_base, ec->renderer->repaint_output(&output->base, damage, NULL); - pixman_region32_subtract(&ec->primary_plane.damage, - &ec->primary_plane.damage, damage); return 0; } #endif @@ -638,8 +636,6 @@ wayland_output_repaint_pixman(struct weston_output *output_base, sb->frame_damaged = 0; - pixman_region32_subtract(&b->compositor->primary_plane.damage, - &b->compositor->primary_plane.damage, damage); return 0; } diff --git a/libweston/backend-x11/x11.c b/libweston/backend-x11/x11.c index 1266b984..d9df40f7 100644 --- a/libweston/backend-x11/x11.c +++ b/libweston/backend-x11/x11.c @@ -441,9 +441,6 @@ x11_output_repaint_gl(struct weston_output *output_base, ec->renderer->repaint_output(output_base, damage, NULL); - pixman_region32_subtract(&ec->primary_plane.damage, - &ec->primary_plane.damage, damage); - wl_event_source_timer_update(output->finish_frame_timer, 10); return 0; } @@ -522,8 +519,6 @@ x11_output_repaint_shm(struct weston_output *output_base, ec->renderer->repaint_output(output_base, damage, output->renderbuffer); - pixman_region32_subtract(&ec->primary_plane.damage, - &ec->primary_plane.damage, damage); set_clip_for_output(output_base, damage); cookie = xcb_shm_put_image_checked(b->conn, output->window, output->gc, pixman_image_get_width(image), diff --git a/libweston/compositor.c b/libweston/compositor.c index 69dcea1f..7a63bdbf 100644 --- a/libweston/compositor.c +++ b/libweston/compositor.c @@ -3263,6 +3263,9 @@ weston_output_repaint(struct weston_output *output) r = output->repaint(output, &output_damage); + pixman_region32_subtract(&ec->primary_plane.damage, + &ec->primary_plane.damage, &output_damage); + pixman_region32_fini(&output_damage); output->repaint_needed = false;