render: pixman-renderer: fix buffer transform & scale 08/52908/1
authorJunghoon <jh13.son@samsung.com>
Tue, 24 Nov 2015 01:37:24 +0000 (10:37 +0900)
committerTaekyun Kim <tkq.kim@samsung.com>
Fri, 27 Nov 2015 10:28:02 +0000 (19:28 +0900)
Change-Id: If3bb7098df3826c0da657193505b6a84e4321f5e

src/lib/render/pixman-renderer.c

index 76319d79e33aa2bec5a38c575b2ab559a395d5b2..f9274dedb53b120d5b47676a593e34c66abbf7fd 100644 (file)
@@ -317,35 +317,31 @@ repaint_view(pepper_renderer_t *renderer, pepper_output_t *output,
             filter = PIXMAN_FILTER_BILINEAR;
         }
 
-        scale = pepper_surface_get_buffer_scale(surface);
         pepper_surface_get_buffer_offset(surface, &x, &y);
         pepper_surface_get_size(surface, &w, &h);
-        pixman_transform_scale(&trans, NULL,
-                               pixman_double_to_fixed(1.0 / scale),
-                               pixman_double_to_fixed(1.0 / scale));
+        pixman_transform_translate(&trans, NULL,
+                                   pixman_int_to_fixed(x), pixman_int_to_fixed(y));
 
         switch (pepper_surface_get_buffer_transform(surface))
         {
         case WL_OUTPUT_TRANSFORM_FLIPPED:
-        case WL_OUTPUT_TRANSFORM_FLIPPED_180:
-            pixman_transform_scale(&trans, NULL, pixman_int_to_fixed(-1), pixman_int_to_fixed(1));
-            pixman_transform_translate(&trans, NULL, pixman_int_to_fixed(w), 0);
-            break;
         case WL_OUTPUT_TRANSFORM_FLIPPED_90:
+        case WL_OUTPUT_TRANSFORM_FLIPPED_180:
         case WL_OUTPUT_TRANSFORM_FLIPPED_270:
             pixman_transform_scale(&trans, NULL, pixman_int_to_fixed(-1), pixman_int_to_fixed(1));
-            pixman_transform_translate(&trans, NULL, pixman_int_to_fixed(h), 0);
+            pixman_transform_translate(&trans, NULL, pixman_int_to_fixed(w), 0);
             break;
         }
+
         switch (pepper_surface_get_buffer_transform(surface))
         {
         case WL_OUTPUT_TRANSFORM_NORMAL:
         case WL_OUTPUT_TRANSFORM_FLIPPED:
             break;
         case WL_OUTPUT_TRANSFORM_90:
-        case WL_OUTPUT_TRANSFORM_FLIPPED_270:
-            pixman_transform_rotate(&trans, NULL, 0, -pixman_fixed_1);
-            pixman_transform_translate(&trans, NULL, 0, pixman_int_to_fixed(w));
+        case WL_OUTPUT_TRANSFORM_FLIPPED_90:
+            pixman_transform_rotate(&trans, NULL, 0, pixman_fixed_1);
+            pixman_transform_translate(&trans, NULL, pixman_int_to_fixed(h), 0);
             break;
         case WL_OUTPUT_TRANSFORM_180:
         case WL_OUTPUT_TRANSFORM_FLIPPED_180:
@@ -355,14 +351,16 @@ repaint_view(pepper_renderer_t *renderer, pepper_output_t *output,
                                        pixman_int_to_fixed(h));
             break;
         case WL_OUTPUT_TRANSFORM_270:
-        case WL_OUTPUT_TRANSFORM_FLIPPED_90:
-            pixman_transform_rotate(&trans, NULL, 0, pixman_fixed_1);
-            pixman_transform_translate(&trans, NULL, pixman_int_to_fixed(h), 0);
+        case WL_OUTPUT_TRANSFORM_FLIPPED_270:
+            pixman_transform_rotate(&trans, NULL, 0, -pixman_fixed_1);
+            pixman_transform_translate(&trans, NULL, 0, pixman_int_to_fixed(w));
             break;
         }
 
-        pixman_transform_translate(&trans, NULL,
-                                   pixman_int_to_fixed(x), pixman_int_to_fixed(y));
+        scale = pepper_surface_get_buffer_scale(surface);
+        pixman_transform_scale(&trans, NULL,
+                               pixman_int_to_fixed(scale),
+                               pixman_int_to_fixed(scale));
 
         pixman_image_set_transform(ps->image, &trans);
         pixman_image_set_filter(ps->image, filter, NULL, 0);