compositor: split weston_surface_damage_below()

Extract the core into a function that does not call
weston_surface_update_transform() or schedule repaint.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
This commit is contained in:
Pekka Paalanen 2012-02-08 14:49:37 +02:00
parent 25dacab718
commit 9abf393bd8

View File

@ -230,6 +230,22 @@ weston_surface_set_color(struct weston_surface *surface,
surface->shader = &surface->compositor->solid_shader;
}
static void
weston_surface_damage_below_noupdate(struct weston_surface *surface)
{
struct weston_surface *below;
if (surface->output == NULL)
return;
if (surface->link.next == &surface->compositor->surface_list)
return;
below = container_of(surface->link.next, struct weston_surface, link);
pixman_region32_union(&below->damage, &below->damage,
&surface->transform.boundingbox);
}
static void
surface_compute_bbox(struct weston_surface *surface, int32_t sx, int32_t sy,
int32_t width, int32_t height,
@ -429,20 +445,8 @@ weston_surface_damage(struct weston_surface *surface)
WL_EXPORT void
weston_surface_damage_below(struct weston_surface *surface)
{
struct weston_surface *below;
if (surface->output == NULL)
return;
if (surface->link.next == &surface->compositor->surface_list)
return;
below = container_of(surface->link.next, struct weston_surface, link);
weston_surface_update_transform(surface);
pixman_region32_union(&below->damage, &below->damage,
&surface->transform.boundingbox);
weston_surface_damage_below_noupdate(surface);
weston_compositor_schedule_repaint(surface->compositor);
}