summaryrefslogtreecommitdiff
path: root/exa
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2008-02-20 10:36:06 -0800
committerEric Anholt <eric@anholt.net>2008-02-20 10:36:06 -0800
commit5cb9e15562a32c1f102d94d5e15d5fd298baff3f (patch)
treedcfd2c1e24cdd074c98c47a8a31075c3b9f61b46 /exa
parent67a78e84a81571cedaf7fd214a21ce1bbdc4fb3b (diff)
EXA: Fix Render acceleration in copy and tiling cases.
Code shuffling in a634c9b03494ba80aeec28be19662ac96657cc23 broke this by leaving pSrcPixmap = NULL.
Diffstat (limited to 'exa')
-rw-r--r--exa/exa_render.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/exa/exa_render.c b/exa/exa_render.c
index a510e54f6..6df2a23c8 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -587,7 +587,6 @@ exaComposite(CARD8 op,
int ret = -1;
Bool saveSrcRepeat = pSrc->repeat;
Bool saveMaskRepeat = pMask ? pMask->repeat : 0;
- PixmapPtr pSrcPixmap = NULL;
RegionRec region;
/* We currently don't support acceleration of gradients, or other pictures
@@ -624,7 +623,9 @@ exaComposite(CARD8 op,
if (ret == 1)
goto done;
}
- else if (pSrcPixmap && !pSrc->repeat && !pSrc->transform)
+ else if (pSrc->pDrawable != NULL &&
+ !pSrc->repeat &&
+ !pSrc->transform)
{
xDst += pDst->pDrawable->x;
yDst += pDst->pDrawable->y;
@@ -644,7 +645,9 @@ exaComposite(CARD8 op,
REGION_UNINIT(pDst->pDrawable->pScreen, &region);
goto done;
}
- else if (pSrcPixmap && !pSrc->transform &&
+ else if (pSrc->pDrawable != NULL &&
+ pSrc->pDrawable->type == DRAWABLE_PIXMAP &&
+ !pSrc->transform &&
pSrc->repeatType == RepeatNormal)
{
DDXPointRec srcOrg;
@@ -671,10 +674,11 @@ exaComposite(CARD8 op,
width, height))
goto done;
- srcOrg.x = (xSrc - xDst) % pSrcPixmap->drawable.width;
- srcOrg.y = (ySrc - yDst) % pSrcPixmap->drawable.height;
+ srcOrg.x = (xSrc - xDst) % pSrc->pDrawable->width;
+ srcOrg.y = (ySrc - yDst) % pSrc->pDrawable->height;
- ret = exaFillRegionTiled(pDst->pDrawable, &region, pSrcPixmap,
+ ret = exaFillRegionTiled(pDst->pDrawable, &region,
+ (PixmapPtr)pSrc->pDrawable,
&srcOrg, FB_ALLONES, GXcopy);
REGION_UNINIT(pDst->pDrawable->pScreen, &region);