summaryrefslogtreecommitdiff
path: root/uxa/uxa-render.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-05-15 00:50:42 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2010-05-15 00:50:42 +0100
commit95654cffa8643f61f153218f27e800df75b9bdee (patch)
treeca1933a8db824b98299b4d2a61634fb8d0902a7d /uxa/uxa-render.c
parentf67b45965b527699794ee21174809c5d71c03f22 (diff)
uxa: Fix order of conditionals to only run fill_region for SRC or opaque
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'uxa/uxa-render.c')
-rw-r--r--uxa/uxa-render.c128
1 files changed, 64 insertions, 64 deletions
diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c
index abbd3cf0..fbecf00b 100644
--- a/uxa/uxa-render.c
+++ b/uxa/uxa-render.c
@@ -1430,79 +1430,79 @@ uxa_composite(CARD8 op,
if (ret == 1)
goto done;
} else if (compatible_formats (op, pDst, pSrc) &&
- !pSrc->repeat &&
- transform_is_integer_translation(pSrc->transform, &tx, &ty) &&
- drawable_contains(pSrc->pDrawable,
+ transform_is_integer_translation(pSrc->transform, &tx, &ty)) {
+ if (!pSrc->repeat &&
+ drawable_contains(pSrc->pDrawable,
xSrc + tx, ySrc + ty,
width, height)) {
- xDst += pDst->pDrawable->x;
- yDst += pDst->pDrawable->y;
- xSrc += pSrc->pDrawable->x + tx;
- ySrc += pSrc->pDrawable->y + ty;
-
- if (!miComputeCompositeRegion
- (&region, pSrc, pMask, pDst, xSrc, ySrc,
- xMask, yMask, xDst, yDst, width, height))
- goto done;
-
- uxa_copy_n_to_n(pSrc->pDrawable,
- pDst->pDrawable, NULL,
- REGION_RECTS(&region),
- REGION_NUM_RECTS(&region),
- xSrc - xDst, ySrc - yDst, FALSE,
- FALSE, 0, NULL);
- REGION_UNINIT(pDst->pDrawable->pScreen,
- &region);
- goto done;
- } else if (pSrc->pDrawable->type == DRAWABLE_PIXMAP &&
- pSrc->repeatType == RepeatNormal &&
- transform_is_integer_translation(pSrc->transform, &tx, &ty)) {
- DDXPointRec patOrg;
-
- /* Let's see if the driver can do the repeat
- * in one go
- */
- if (uxa_screen->info->prepare_composite) {
- ret = uxa_try_driver_composite(op, pSrc,
- pMask, pDst,
- xSrc, ySrc,
- xMask, yMask,
- xDst, yDst,
- width, height);
- if (ret == 1)
+ xDst += pDst->pDrawable->x;
+ yDst += pDst->pDrawable->y;
+ xSrc += pSrc->pDrawable->x + tx;
+ ySrc += pSrc->pDrawable->y + ty;
+
+ if (!miComputeCompositeRegion
+ (&region, pSrc, pMask, pDst, xSrc, ySrc,
+ xMask, yMask, xDst, yDst, width, height))
goto done;
- }
- /* Now see if we can use
- * uxa_fill_region_tiled()
- */
- xDst += pDst->pDrawable->x;
- yDst += pDst->pDrawable->y;
- xSrc += pSrc->pDrawable->x + tx;
- ySrc += pSrc->pDrawable->y + ty;
-
- if (!miComputeCompositeRegion
- (&region, pSrc, pMask, pDst, xSrc, ySrc,
- xMask, yMask, xDst, yDst, width, height))
+ uxa_copy_n_to_n(pSrc->pDrawable,
+ pDst->pDrawable, NULL,
+ REGION_RECTS(&region),
+ REGION_NUM_RECTS(&region),
+ xSrc - xDst, ySrc - yDst, FALSE,
+ FALSE, 0, NULL);
+ REGION_UNINIT(pDst->pDrawable->pScreen,
+ &region);
goto done;
+ } else if (pSrc->repeat && pSrc->repeatType == RepeatNormal &&
+ pSrc->pDrawable->type == DRAWABLE_PIXMAP) {
+ DDXPointRec patOrg;
+
+ /* Let's see if the driver can do the repeat
+ * in one go
+ */
+ if (uxa_screen->info->prepare_composite) {
+ ret = uxa_try_driver_composite(op, pSrc,
+ pMask, pDst,
+ xSrc, ySrc,
+ xMask, yMask,
+ xDst, yDst,
+ width, height);
+ if (ret == 1)
+ goto done;
+ }
- /* pattern origin is the point in the
- * destination drawable
- * corresponding to (0,0) in the source */
- patOrg.x = xDst - xSrc;
- patOrg.y = yDst - ySrc;
+ /* Now see if we can use
+ * uxa_fill_region_tiled()
+ */
+ xDst += pDst->pDrawable->x;
+ yDst += pDst->pDrawable->y;
+ xSrc += pSrc->pDrawable->x + tx;
+ ySrc += pSrc->pDrawable->y + ty;
+
+ if (!miComputeCompositeRegion
+ (&region, pSrc, pMask, pDst, xSrc, ySrc,
+ xMask, yMask, xDst, yDst, width, height))
+ goto done;
- ret = uxa_fill_region_tiled(pDst->pDrawable,
- &region,
- (PixmapPtr) pSrc->
- pDrawable, &patOrg,
- FB_ALLONES, GXcopy);
+ /* pattern origin is the point in the
+ * destination drawable
+ * corresponding to (0,0) in the source */
+ patOrg.x = xDst - xSrc;
+ patOrg.y = yDst - ySrc;
- REGION_UNINIT(pDst->pDrawable->pScreen,
- &region);
+ ret = uxa_fill_region_tiled(pDst->pDrawable,
+ &region,
+ (PixmapPtr) pSrc->
+ pDrawable, &patOrg,
+ FB_ALLONES, GXcopy);
- if (ret)
- goto done;
+ REGION_UNINIT(pDst->pDrawable->pScreen,
+ &region);
+
+ if (ret)
+ goto done;
+ }
}
}