summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Paalanen <ppaalanen@gmail.com>2012-01-27 14:38:33 +0200
committerPekka Paalanen <ppaalanen@gmail.com>2012-01-27 16:15:02 +0200
commit15d60efee9ecd92c8ff73f2b6972994adab1e279 (patch)
tree1e402be746fcf52b36461451bb21bc9828b4d073
parent2267d45f7c55ab452ad827c6997d623b54065a69 (diff)
compositor: make overlap computation use the boundingbox
This makes the overlap to account for surface transformations. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-rw-r--r--src/compositor.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/compositor.c b/src/compositor.c
index 9f94abf..87c0fbe 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -910,18 +910,15 @@ weston_output_repaint(struct weston_output *output, int msecs)
pixman_region32_init(&overlap);
wl_list_for_each(es, &ec->surface_list, link) {
+ weston_surface_update_transform(es);
+
pixman_region32_init(&surface_overlap);
- pixman_region32_intersect_rect(&surface_overlap,
- &overlap,
- es->geometry.x, es->geometry.y,
- es->geometry.width,
- es->geometry.height);
+ pixman_region32_intersect(&surface_overlap, &overlap,
+ &es->transform.boundingbox);
es->overlapped = pixman_region32_not_empty(&surface_overlap);
pixman_region32_fini(&surface_overlap);
- pixman_region32_union_rect(&overlap, &overlap,
- es->geometry.x, es->geometry.y,
- es->geometry.width,
- es->geometry.height);
+ pixman_region32_union(&overlap, &overlap,
+ &es->transform.boundingbox);
}
weston_output_set_cursor(output, ec->input_device);