mirror of
https://gitlab.freedesktop.org/wayland/weston
synced 2024-10-15 15:43:42 +00:00
compositor: let update_transform deal damage
weston_surface_update_transform() is similar to weston_surface_configure() in that it changes the surface region on screen. Unlike configure, update_transform forgets to deal damage at all, yet it is the only place where we can do damage_below() as needed. Add a damage_below call to deal damage for the old surface region only when needed. This uses the cached state from surface->transform to get the old region. Add a damage call to deal damage for the new surface region, after updating the cached state. Add a repaint call, since we have changed the scene and should render it out. This change fixes the rotation not updating the screen properly. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
This commit is contained in:
parent
1d5035c705
commit
9651678070
|
@ -357,6 +357,8 @@ weston_surface_update_transform(struct weston_surface *surface)
|
|||
|
||||
surface->geometry.dirty = 0;
|
||||
|
||||
weston_surface_damage_below_noupdate(surface);
|
||||
|
||||
pixman_region32_fini(&surface->transform.boundingbox);
|
||||
|
||||
/* transform.position is always in transformation_list */
|
||||
|
@ -369,6 +371,12 @@ weston_surface_update_transform(struct weston_surface *surface)
|
|||
if (weston_surface_update_transform_enable(surface) < 0)
|
||||
weston_surface_update_transform_disable(surface);
|
||||
}
|
||||
|
||||
/* weston_surface_damage() without update */
|
||||
pixman_region32_union(&surface->damage, &surface->damage,
|
||||
&surface->transform.boundingbox);
|
||||
|
||||
weston_compositor_schedule_repaint(surface->compositor);
|
||||
}
|
||||
|
||||
WL_EXPORT void
|
||||
|
|
Loading…
Reference in a new issue