From 50fba97ec634f6c9d4fd60d553c426d3d422c3bd Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 25 Feb 2014 21:54:59 -0600 Subject: [PATCH] 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 --- src/pixman-renderer.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pixman-renderer.c b/src/pixman-renderer.c index 26f6f279..e9e907ef 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)