EXA: Fix TS origin computation when implementing RenderComposite with tiling.

This commit is contained in:
Owen W. Taylor 2008-04-03 14:50:05 -04:00 committed by Michel Dänzer
parent 539bf3c283
commit 6b1a27023e

View File

@ -650,7 +650,7 @@ exaComposite(CARD8 op,
!pSrc->transform && !pSrc->transform &&
pSrc->repeatType == RepeatNormal) pSrc->repeatType == RepeatNormal)
{ {
DDXPointRec srcOrg; DDXPointRec patOrg;
/* Let's see if the driver can do the repeat in one go */ /* Let's see if the driver can do the repeat in one go */
if (pExaScr->info->PrepareComposite && !pSrc->alphaMap && if (pExaScr->info->PrepareComposite && !pSrc->alphaMap &&
@ -674,12 +674,14 @@ exaComposite(CARD8 op,
width, height)) width, height))
goto done; goto done;
srcOrg.x = (xSrc - xDst) % pSrc->pDrawable->width; /* pattern origin is the point in the destination drawable
srcOrg.y = (ySrc - yDst) % pSrc->pDrawable->height; * corresponding to (0,0) in the source */
patOrg.x = xDst - xSrc;
patOrg.y = yDst - ySrc;
ret = exaFillRegionTiled(pDst->pDrawable, &region, ret = exaFillRegionTiled(pDst->pDrawable, &region,
(PixmapPtr)pSrc->pDrawable, (PixmapPtr)pSrc->pDrawable,
&srcOrg, FB_ALLONES, GXcopy); &patOrg, FB_ALLONES, GXcopy);
REGION_UNINIT(pDst->pDrawable->pScreen, &region); REGION_UNINIT(pDst->pDrawable->pScreen, &region);