summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRob Clark <rob@ti.com>2012-01-26 16:35:40 -0600
committerRob Clark <rob@ti.com>2012-01-27 11:13:32 -0600
commit6412a4c610fbe7c2701538971a82569c38c3cb52 (patch)
tree55662a61a4d37aa230dc9000485eca3cc514865b /src
parent447d4134017d4c390a97a82e232150bc34173407 (diff)
fix XV scaling with src crop
Diffstat (limited to 'src')
-rw-r--r--src/omap_exa_utils.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/omap_exa_utils.c b/src/omap_exa_utils.c
index 74032b3..2b47283 100644
--- a/src/omap_exa_utils.c
+++ b/src/omap_exa_utils.c
@@ -84,8 +84,8 @@ OMAPVidCopyArea(DrawablePtr pSrcDraw, BoxPtr pSrcBox,
(pDstBox->x2 - pDstBox->x1);
sy = ((pixman_fixed_48_16_t) (pSrcBox->y2 - pSrcBox->y1) << 16) /
(pDstBox->y2 - pDstBox->y1);
- tx = ((pixman_fixed_48_16_t)(pDstBox->x1 - pSrcBox->x1 - dx) << 16);
- ty = ((pixman_fixed_48_16_t)(pDstBox->y1 - pSrcBox->y1 - dy) << 16);
+ tx = ((pixman_fixed_48_16_t)(pDstBox->x1 - dx) << 16);
+ ty = ((pixman_fixed_48_16_t)(pDstBox->y1 - dy) << 16);
pixman_transform_init_scale(&srcxfrm, sx, sy);
pixman_transform_translate(NULL, &srcxfrm, tx, ty);
@@ -104,6 +104,12 @@ OMAPVidCopyArea(DrawablePtr pSrcDraw, BoxPtr pSrcBox,
pixman_transform_bounds(&srcxfrm, &srcb);
//pixman_transform_bounds(&osdxfrm, &osdb);
+ /* cropping is done in src coord space, post transform: */
+ srcb.x1 += pSrcBox->x1;
+ srcb.y1 += pSrcBox->y1;
+ srcb.x2 += pSrcBox->x1;
+ srcb.y2 += pSrcBox->y1;
+
DEBUG_MSG("%d,%d %d,%d -> %d,%d %d,%d",
srcb.x1, srcb.y1, srcb.x2, srcb.y2,
dstb.x1, dstb.y1, dstb.x2, dstb.y2);