diff options
author | Rob Clark <rob@ti.com> | 2012-01-26 16:35:40 -0600 |
---|---|---|
committer | Rob Clark <rob@ti.com> | 2012-01-27 11:13:32 -0600 |
commit | 6412a4c610fbe7c2701538971a82569c38c3cb52 (patch) | |
tree | 55662a61a4d37aa230dc9000485eca3cc514865b /src | |
parent | 447d4134017d4c390a97a82e232150bc34173407 (diff) |
fix XV scaling with src crop
Diffstat (limited to 'src')
-rw-r--r-- | src/omap_exa_utils.c | 10 |
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); |