Replace all uses of weston_transform_region with
weston_matrix_transform_region, then remove the function completely.
---
 src/compositor-wayland.c |  8 ++---
 src/compositor-x11.c     |  8 +----
 src/compositor.c         | 92 ------------------------------------------------
 src/compositor.h         |  6 ----
 src/gl-renderer.c        | 11 +++---
 src/pixman-renderer.c    | 10 +-----
 src/screen-share.c       |  8 ++---
 src/screenshooter.c      |  7 ++--
 8 files changed, 19 insertions(+), 131 deletions(-)

diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index bf71a76..f571910 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -502,11 +502,9 @@ wayland_shm_buffer_attach(struct wayland_shm_buffer *sb)
        int i, n;
 
        pixman_region32_init(&damage);
-       weston_transformed_region(sb->output->base.width,
-                                 sb->output->base.height,
-                                 sb->output->base.transform,
-                                 sb->output->base.current_scale,
-                                 &sb->damage, &damage);
+       pixman_region32_copy(&damage, &sb->damage);
+       pixman_region32_translate(&damage, sb->output->base.x, 
sb->output->base.y);
+       weston_matrix_transform_region(&damage, &sb->output->base.matrix, 
&damage);
 
        if (sb->output->frame) {
                frame_interior(sb->output->frame, &ix, &iy, &iwidth, &iheight);
diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index 1baee29..971c718 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -374,13 +374,7 @@ set_clip_for_output(struct weston_output *output_base, 
pixman_region32_t *region
        xcb_generic_error_t *err;
 
        pixman_region32_init(&transformed_region);
-       pixman_region32_copy(&transformed_region, region);
-       pixman_region32_translate(&transformed_region,
-                                 -output_base->x, -output_base->y);
-       weston_transformed_region(output_base->width, output_base->height,
-                                 output_base->transform,
-                                 output_base->current_scale,
-                                 &transformed_region, &transformed_region);
+       weston_matrix_transform_region(&transformed_region, 
&output_base->matrix, region);
 
        rects = pixman_region32_rectangles(&transformed_region, &nrects);
        output_rects = calloc(nrects, sizeof(xcb_rectangle_t));
diff --git a/src/compositor.c b/src/compositor.c
index b2b10dd..68fbd71 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -800,98 +800,6 @@ weston_matrix_transform_region(pixman_region32_t *dest,
 }
 
 WL_EXPORT void
-weston_transformed_region(int width, int height,
-                         enum wl_output_transform transform,
-                         int32_t scale,
-                         pixman_region32_t *src, pixman_region32_t *dest)
-{
-       pixman_box32_t *src_rects, *dest_rects;
-       int nrects, i;
-
-       if (transform == WL_OUTPUT_TRANSFORM_NORMAL && scale == 1) {
-               if (src != dest)
-                       pixman_region32_copy(dest, src);
-               return;
-       }
-
-       src_rects = pixman_region32_rectangles(src, &nrects);
-       dest_rects = malloc(nrects * sizeof(*dest_rects));
-       if (!dest_rects)
-               return;
-
-       if (transform == WL_OUTPUT_TRANSFORM_NORMAL) {
-               memcpy(dest_rects, src_rects, nrects * sizeof(*dest_rects));
-       } else {
-               for (i = 0; i < nrects; i++) {
-                       switch (transform) {
-                       default:
-                       case WL_OUTPUT_TRANSFORM_NORMAL:
-                               dest_rects[i].x1 = src_rects[i].x1;
-                               dest_rects[i].y1 = src_rects[i].y1;
-                               dest_rects[i].x2 = src_rects[i].x2;
-                               dest_rects[i].y2 = src_rects[i].y2;
-                               break;
-                       case WL_OUTPUT_TRANSFORM_90:
-                               dest_rects[i].x1 = height - src_rects[i].y2;
-                               dest_rects[i].y1 = src_rects[i].x1;
-                               dest_rects[i].x2 = height - src_rects[i].y1;
-                               dest_rects[i].y2 = src_rects[i].x2;
-                               break;
-                       case WL_OUTPUT_TRANSFORM_180:
-                               dest_rects[i].x1 = width - src_rects[i].x2;
-                               dest_rects[i].y1 = height - src_rects[i].y2;
-                               dest_rects[i].x2 = width - src_rects[i].x1;
-                               dest_rects[i].y2 = height - src_rects[i].y1;
-                               break;
-                       case WL_OUTPUT_TRANSFORM_270:
-                               dest_rects[i].x1 = src_rects[i].y1;
-                               dest_rects[i].y1 = width - src_rects[i].x2;
-                               dest_rects[i].x2 = src_rects[i].y2;
-                               dest_rects[i].y2 = width - src_rects[i].x1;
-                               break;
-                       case WL_OUTPUT_TRANSFORM_FLIPPED:
-                               dest_rects[i].x1 = width - src_rects[i].x2;
-                               dest_rects[i].y1 = src_rects[i].y1;
-                               dest_rects[i].x2 = width - src_rects[i].x1;
-                               dest_rects[i].y2 = src_rects[i].y2;
-                               break;
-                       case WL_OUTPUT_TRANSFORM_FLIPPED_90:
-                               dest_rects[i].x1 = height - src_rects[i].y2;
-                               dest_rects[i].y1 = width - src_rects[i].x2;
-                               dest_rects[i].x2 = height - src_rects[i].y1;
-                               dest_rects[i].y2 = width - src_rects[i].x1;
-                               break;
-                       case WL_OUTPUT_TRANSFORM_FLIPPED_180:
-                               dest_rects[i].x1 = src_rects[i].x1;
-                               dest_rects[i].y1 = height - src_rects[i].y2;
-                               dest_rects[i].x2 = src_rects[i].x2;
-                               dest_rects[i].y2 = height - src_rects[i].y1;
-                               break;
-                       case WL_OUTPUT_TRANSFORM_FLIPPED_270:
-                               dest_rects[i].x1 = src_rects[i].y1;
-                               dest_rects[i].y1 = src_rects[i].x1;
-                               dest_rects[i].x2 = src_rects[i].y2;
-                               dest_rects[i].y2 = src_rects[i].x2;
-                               break;
-                       }
-               }
-       }
-
-       if (scale != 1) {
-               for (i = 0; i < nrects; i++) {
-                       dest_rects[i].x1 *= scale;
-                       dest_rects[i].x2 *= scale;
-                       dest_rects[i].y1 *= scale;
-                       dest_rects[i].y2 *= scale;
-               }
-       }
-
-       pixman_region32_clear(dest);
-       pixman_region32_init_rects(dest, dest_rects, nrects);
-       free(dest_rects);
-}
-
-WL_EXPORT void
 weston_surface_to_buffer_float(struct weston_surface *surface,
                               float sx, float sy, float *bx, float *by)
 {
diff --git a/src/compositor.h b/src/compositor.h
index 79b5190..4fdf4dc 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -1471,12 +1471,6 @@ void
 weston_matrix_transform_region(pixman_region32_t *dest,
                                struct weston_matrix *matrix,
                                pixman_region32_t *src);
-void
-weston_transformed_region(int width, int height,
-                         enum wl_output_transform transform,
-                         int32_t scale,
-                         pixman_region32_t *src, pixman_region32_t *dest);
-
 void *
 weston_load_module(const char *name, const char *entrypoint);
 
diff --git a/src/gl-renderer.c b/src/gl-renderer.c
index 28b3b75..cfc1e88 100644
--- a/src/gl-renderer.c
+++ b/src/gl-renderer.c
@@ -924,10 +924,13 @@ gl_renderer_repaint_output(struct weston_output *output,
 #ifdef EGL_EXT_swap_buffers_with_damage
        if (gr->swap_buffers_with_damage) {
                pixman_region32_init(&buffer_damage);
-               weston_transformed_region(output->width, output->height,
-                                         output->transform,
-                                         output->current_scale,
-                                         output_damage, &buffer_damage);
+               pixman_region32_copy(&buffer_damage, output_damage);
+               pixman_region32_translate(&buffer_damage,
+                                         output->x,
+                                         output->y);
+               weston_matrix_transform_region(&buffer_damage,
+                                              &output->matrix,
+                                              &buffer_damage);
 
                if (output_has_borders(output)) {
                        pixman_region32_translate(&buffer_damage,
diff --git a/src/pixman-renderer.c b/src/pixman-renderer.c
index 9494142..2f54a64 100644
--- a/src/pixman-renderer.c
+++ b/src/pixman-renderer.c
@@ -130,15 +130,7 @@ pixman_renderer_read_pixels(struct weston_output *output,
 static void
 region_global_to_output(struct weston_output *output, pixman_region32_t 
*region)
 {
-       if (output->zoom.active) {
-               weston_matrix_transform_region(region, &output->matrix, region);
-       } else {
-               pixman_region32_translate(region, -output->x, -output->y);
-               weston_transformed_region(output->width, output->height,
-                                         output->transform,
-                                         output->current_scale,
-                                         region, region);
-       }
+       weston_matrix_transform_region(region, &output->matrix, region);
 }
 
 #define D2F(v) pixman_double_to_fixed((double)v)
diff --git a/src/screen-share.c b/src/screen-share.c
index 524a0ca..ceb970c 100644
--- a/src/screen-share.c
+++ b/src/screen-share.c
@@ -790,11 +790,11 @@ shared_output_repainted(struct wl_listener *listener, 
void *data)
        wl_list_for_each(sb, &so->shm.buffers, link)
                pixman_region32_union(&sb->damage, &sb->damage, &damage);
 
+       /* put it back... */
+       pixman_region32_translate(&damage, so->output->x, so->output->y);
+
        /* Transform to buffer coordinates */
-       weston_transformed_region(so->output->width, so->output->height,
-                                 so->output->transform,
-                                 so->output->current_scale,
-                                 &damage, &damage);
+       weston_matrix_transform_region(&damage, &so->output->matrix, &damage);
 
        width = so->output->current_mode->width;
        height = so->output->current_mode->height;
diff --git a/src/screenshooter.c b/src/screenshooter.c
index cafbf10..469f19b 100644
--- a/src/screenshooter.c
+++ b/src/screenshooter.c
@@ -379,10 +379,9 @@ weston_recorder_frame_notify(struct wl_listener *listener, 
void *data)
        pixman_region32_init(&transformed_damage);
        pixman_region32_intersect(&damage, &output->region,
                                  &output->previous_damage);
-       pixman_region32_translate(&damage, -output->x, -output->y);
-       weston_transformed_region(output->width, output->height,
-                                output->transform, output->current_scale,
-                                &damage, &transformed_damage);
+       weston_matrix_transform_region(&transformed_damage,
+                                      &output->matrix,
+                                      &damage);
        pixman_region32_fini(&damage);
 
        r = pixman_region32_rectangles(&transformed_damage, &n);
-- 
2.1.1

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to