From d0cebc36fbb231f628e8fd583ac57b9758f0f919 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Mon, 21 Apr 2014 20:56:46 -0500 Subject: [PATCH] Use the correct width/height when transforming surfaces with viewports. Previously, because of the wrong width/height, weston_surface_to_buffer_* would return the wrong values when wl_viewport was used in combination with wl_surface.set_buffer_transform. Reviewed-by: Pekka Paalanen Signed-off-by: Jason Ekstrand --- src/compositor.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/compositor.c b/src/compositor.c index fd2decb3..a35c5789 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -675,7 +675,8 @@ weston_surface_to_buffer_float(struct weston_surface *surface, /* first transform coordinates if the scaler is set */ scaler_surface_to_buffer(surface, sx, sy, bx, by); - weston_transformed_coord(surface->width, surface->height, + weston_transformed_coord(surface->width_from_buffer, + surface->height_from_buffer, vp->buffer.transform, vp->buffer.scale, *bx, *by, bx, by); } @@ -709,7 +710,8 @@ weston_surface_to_buffer_rect(struct weston_surface *surface, rect.x2 = floorf(xf); rect.y2 = floorf(yf); - return weston_transformed_rect(surface->width, surface->height, + return weston_transformed_rect(surface->width_from_buffer, + surface->height_from_buffer, vp->buffer.transform, vp->buffer.scale, rect); }