compositor: clarify update_transform vs. repaint
Remove redundant weston_surface_update_transform() calls from within output repaint paths, and add a comment that we need to rely on surface->geometry.dirty == 0 within the repaint sub-functions. Now that weston_surface_update_transform() does damage as needed, and weston_output_repaint() explicitly calls update_transform, we can reduce the updates in rotate_grab_motion() to simply scheduling a repaint. This will guarantee that the change in rotation ends up on screen ASAP. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
This commit is contained in:
parent
9651678070
commit
b45ac5eada
@ -716,8 +716,6 @@ weston_surface_draw(struct weston_surface *es, struct weston_output *output)
|
||||
GLint filter;
|
||||
int n;
|
||||
|
||||
weston_surface_update_transform(es);
|
||||
|
||||
pixman_region32_init(&repaint);
|
||||
pixman_region32_intersect(&repaint, &es->transform.boundingbox,
|
||||
&output->region);
|
||||
@ -892,8 +890,6 @@ weston_output_set_cursor(struct weston_output *output,
|
||||
if (device->sprite == NULL)
|
||||
return;
|
||||
|
||||
weston_surface_update_transform(device->sprite);
|
||||
|
||||
pixman_region32_init(&cursor_region);
|
||||
pixman_region32_intersect(&cursor_region,
|
||||
&device->sprite->transform.boundingbox,
|
||||
@ -951,6 +947,8 @@ weston_output_repaint(struct weston_output *output, int msecs)
|
||||
pixman_region32_init(&overlap);
|
||||
|
||||
wl_list_for_each(es, &ec->surface_list, link) {
|
||||
/* Update surface transform now to avoid calling it ever
|
||||
* again from the repaint sub-functions. */
|
||||
weston_surface_update_transform(es);
|
||||
|
||||
pixman_region32_init(&surface_overlap);
|
||||
|
@ -1034,6 +1034,11 @@ rotate_grab_motion(struct wl_grab *grab,
|
||||
weston_matrix_init(&surface->rotation.rotation);
|
||||
weston_matrix_init(&rotate->rotation);
|
||||
}
|
||||
|
||||
/* Repaint implies weston_surface_update_transform(), which
|
||||
* lazily applies the damage due to rotation update.
|
||||
*/
|
||||
weston_compositor_schedule_repaint(surface->surface->compositor);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user