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:
+17
-13
@@ -230,6 +230,22 @@ weston_surface_set_color(struct weston_surface *surface,
|
|||||||
surface->shader = &surface->compositor->solid_shader;
|
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
|
static void
|
||||||
surface_compute_bbox(struct weston_surface *surface, int32_t sx, int32_t sy,
|
surface_compute_bbox(struct weston_surface *surface, int32_t sx, int32_t sy,
|
||||||
int32_t width, int32_t height,
|
int32_t width, int32_t height,
|
||||||
@@ -429,20 +445,8 @@ weston_surface_damage(struct weston_surface *surface)
|
|||||||
WL_EXPORT void
|
WL_EXPORT void
|
||||||
weston_surface_damage_below(struct weston_surface *surface)
|
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);
|
weston_surface_update_transform(surface);
|
||||||
pixman_region32_union(&below->damage, &below->damage,
|
weston_surface_damage_below_noupdate(surface);
|
||||||
&surface->transform.boundingbox);
|
|
||||||
|
|
||||||
weston_compositor_schedule_repaint(surface->compositor);
|
weston_compositor_schedule_repaint(surface->compositor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user