From: Jason Ekstrand Date: Wed, 26 Feb 2014 03:54:59 +0000 (-0600) Subject: Fix the pixman renderer with respect to output transforms X-Git-Tag: 1.4.91~70 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=50fba97ec634f6c9d4fd60d553c426d3d422c3bd;p=platform%2Fupstream%2Fweston.git Fix the pixman renderer with respect to output transforms Commit fa1b3055 introducted a regression in the pixman renderer. In particular, it would not draw properly with any output transform other than normal, 180, 180-flipped, or 270-flipped. This patch fixes this regression. The weston-scalar program appears to work normally at all rotations with this patch. Therefore, this patch should fix the regression while maintaining the added functionality from fa1b3055. Signed-off-by: Jason Ekstrand --- diff --git a/src/pixman-renderer.c b/src/pixman-renderer.c index 26f6f27..e9e907e 100644 --- a/src/pixman-renderer.c +++ b/src/pixman-renderer.c @@ -276,12 +276,8 @@ repaint_region(struct weston_view *ev, struct weston_output *output, pixman_double_to_fixed(viewport_y)); } - pixman_transform_scale(&transform, NULL, - pixman_double_to_fixed(ev->surface->buffer_viewport.scale), - pixman_double_to_fixed(ev->surface->buffer_viewport.scale)); - - fw = pixman_int_to_fixed(pixman_image_get_width(ps->image)); - fh = pixman_int_to_fixed(pixman_image_get_height(ps->image)); + fw = pixman_int_to_fixed(ev->surface->width); + fh = pixman_int_to_fixed(ev->surface->height); switch (ev->surface->buffer_viewport.transform) { case WL_OUTPUT_TRANSFORM_FLIPPED: @@ -317,6 +313,10 @@ repaint_region(struct weston_view *ev, struct weston_output *output, break; } + pixman_transform_scale(&transform, NULL, + pixman_double_to_fixed(ev->surface->buffer_viewport.scale), + pixman_double_to_fixed(ev->surface->buffer_viewport.scale)); + pixman_image_set_transform(ps->image, &transform); if (ev->transform.enabled || output->current_scale != ev->surface->buffer_viewport.scale)