diff options
author | Owen W. Taylor <otaylor@fishsoup.net> | 2008-04-03 14:50:05 -0400 |
---|---|---|
committer | Michel Dänzer <michel@tungstengraphics.com> | 2008-04-07 11:01:09 +0200 |
commit | 6b1a27023e48b661c4bb3b61181ac57608d8e448 (patch) | |
tree | 6e25cb9f7403c9c3d5c5dc37de985e8cb25c576c /exa | |
parent | 539bf3c2836727e7560c64144071b086f8ea32fe (diff) |
EXA: Fix TS origin computation when implementing RenderComposite with tiling.
Diffstat (limited to 'exa')
-rw-r--r-- | exa/exa_render.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/exa/exa_render.c b/exa/exa_render.c index 38e2a04bd..da8140102 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -650,7 +650,7 @@ exaComposite(CARD8 op, !pSrc->transform && pSrc->repeatType == RepeatNormal) { - DDXPointRec srcOrg; + DDXPointRec patOrg; /* Let's see if the driver can do the repeat in one go */ if (pExaScr->info->PrepareComposite && !pSrc->alphaMap && @@ -674,12 +674,14 @@ exaComposite(CARD8 op, width, height)) goto done; - srcOrg.x = (xSrc - xDst) % pSrc->pDrawable->width; - srcOrg.y = (ySrc - yDst) % pSrc->pDrawable->height; + /* pattern origin is the point in the destination drawable + * corresponding to (0,0) in the source */ + patOrg.x = xDst - xSrc; + patOrg.y = yDst - ySrc; ret = exaFillRegionTiled(pDst->pDrawable, ®ion, (PixmapPtr)pSrc->pDrawable, - &srcOrg, FB_ALLONES, GXcopy); + &patOrg, FB_ALLONES, GXcopy); REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); |