[PATCH weston v2 11/16] pixman-renderer: refactor into region_intersect_only_translation()
Pekka Paalanen
ppaalanen at gmail.com
Tue Mar 10 06:01:42 PDT 2015
From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
Move code into a new helper function. No changes.
Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
Reviewed-By: Derek Foreman <derekf at osg.samsung.com>
---
src/pixman-renderer.c | 31 ++++++++++++++++++-------------
1 file changed, 18 insertions(+), 13 deletions(-)
diff --git a/src/pixman-renderer.c b/src/pixman-renderer.c
index 8fd50e3..96123cb 100644
--- a/src/pixman-renderer.c
+++ b/src/pixman-renderer.c
@@ -181,6 +181,22 @@ pixman_renderer_compute_transform(pixman_transform_t *transform_out,
}
static void
+region_intersect_only_translation(pixman_region32_t *result_global,
+ pixman_region32_t *global,
+ pixman_region32_t *surf,
+ struct weston_view *view)
+{
+ float view_x, view_y;
+
+ /* Convert from surface to global coordinates */
+ pixman_region32_copy(result_global, surf);
+ weston_view_to_global_float(view, 0, 0, &view_x, &view_y);
+ pixman_region32_translate(result_global, (int)view_x, (int)view_y);
+
+ pixman_region32_intersect(result_global, result_global, global);
+}
+
+static void
repaint_region(struct weston_view *ev, struct weston_output *output,
pixman_region32_t *region, pixman_region32_t *surf_region,
pixman_op_t pixman_op)
@@ -191,7 +207,6 @@ repaint_region(struct weston_view *ev, struct weston_output *output,
struct pixman_output_state *po = get_output_state(output);
struct weston_buffer_viewport *vp = &ev->surface->buffer_viewport;
pixman_region32_t final_region;
- float view_x, view_y;
pixman_transform_t transform;
pixman_image_t *mask_image;
pixman_color_t mask = { 0, };
@@ -203,18 +218,8 @@ repaint_region(struct weston_view *ev, struct weston_output *output,
*/
pixman_region32_init(&final_region);
if (surf_region) {
- pixman_region32_copy(&final_region, surf_region);
-
- /* Convert from surface to global coordinates */
- if (!ev->transform.enabled) {
- pixman_region32_translate(&final_region, ev->geometry.x, ev->geometry.y);
- } else {
- weston_view_to_global_float(ev, 0, 0, &view_x, &view_y);
- pixman_region32_translate(&final_region, (int)view_x, (int)view_y);
- }
-
- /* We need to paint the intersection */
- pixman_region32_intersect(&final_region, &final_region, region);
+ region_intersect_only_translation(&final_region, region,
+ surf_region, ev);
} else {
/* If there is no surface region, just use the global region */
pixman_region32_copy(&final_region, region);
--
2.0.5
More information about the wayland-devel
mailing list