viewport: fix croped full calculation error if transform set 90 or 270 23/185223/1 accepted/tizen/4.0/unified/20180803.172310 submit/tizen_4.0/20180727.064400
authorJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 27 Jul 2018 04:50:06 +0000 (13:50 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 27 Jul 2018 05:30:00 +0000 (14:30 +0900)
Change-Id: Iee795785e7513df4c72766e83b241944e62ec376
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/bin/e_comp_wl_viewport.c

index 2ab7840bbe1c59ec8c9e9a79f5aafc7234a4540b..650736aa81b8330c120aecb92175ac29d99b1777 100644 (file)
@@ -1228,6 +1228,7 @@ _e_comp_wl_viewport_crop_by_parent(E_Viewport *viewport, Eina_Rectangle *parent,
    Eina_Rectangle crop;
    double rx, ry, rw, rh;
    int bw, bh;
+   int transform;
 
    PDB("dst(%d,%d %dx%d) parent(%d,%d %dx%d)", EINA_RECTANGLE_ARGS(dst), EINA_RECTANGLE_ARGS(parent));
 
@@ -1268,6 +1269,13 @@ _e_comp_wl_viewport_crop_by_parent(E_Viewport *viewport, Eina_Rectangle *parent,
    rw = (double)crop.w / dst->w;
    rh = (double)crop.h / dst->h;
 
+   transform = e_comp_wl_output_buffer_transform_get(viewport->ec);
+   if (transform % 2)
+     {
+        SWAP(rx, ry);
+        SWAP(rw, rh);
+     }
+
    crop.x += dst->x;
    crop.y += dst->y;
    *dst = crop;
@@ -1293,10 +1301,6 @@ _e_comp_wl_viewport_crop_by_parent(E_Viewport *viewport, Eina_Rectangle *parent,
    viewport->cropped_source.w = viewport->cropped_source.w * rw;
    viewport->cropped_source.h = viewport->cropped_source.h * rh;
 
-   _source_transform_to_surface(bw, bh,
-                                e_comp_wl_output_buffer_transform_get(viewport->ec), 1,
-                                &viewport->cropped_source, &viewport->cropped_source);
-
    vp->buffer.src_x = wl_fixed_from_int(viewport->cropped_source.x);
    vp->buffer.src_y = wl_fixed_from_int(viewport->cropped_source.y);
    vp->buffer.src_width = wl_fixed_from_int(viewport->cropped_source.w);