summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <anholt@FreeBSD.org>2006-07-02 12:41:35 +0200
committerEric Anholt <anholt@FreeBSD.org>2006-07-03 16:41:44 +0200
commit7106a77df37c06d2b5568eceeb9297096bff3137 (patch)
tree36a817e935fa9d69bc1c3c2d7236b4bdb294a817
parentf5e92542a14f51029347b6476e4e4af69144930b (diff)
Fix bugs in support for new repeatTypes in XAA and EXA.
EXA now won't pass pictures with new repeatTypes to drivers. We can add a flag for them to support it at a later time.
-rw-r--r--exa/exa_render.c5
-rw-r--r--hw/xfree86/xaa/xaaPict.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/exa/exa_render.c b/exa/exa_render.c
index b21c5d724..2187af810 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -535,7 +535,8 @@ exaComposite(CARD8 op,
if (op == PictOpSrc)
{
if (pSrc->pDrawable->width == 1 &&
- pSrc->pDrawable->height == 1 && pSrc->repeat)
+ pSrc->pDrawable->height == 1 && pSrc->repeat &&
+ pSrc->repeatType == RepeatNormal)
{
ret = exaTryDriverSolidFill(pSrc, pDst, xSrc, ySrc, xDst, yDst,
width, height);
@@ -575,6 +576,8 @@ exaComposite(CARD8 op,
pMask->repeat = 0;
if (pExaScr->info->PrepareComposite &&
+ (!pSrc->repeat || pSrc->repeat == RepeatNormal) &&
+ (!pMask || !pMask->repeat || pMask->repeat == RepeatNormal) &&
!pSrc->alphaMap && (!pMask || !pMask->alphaMap) && !pDst->alphaMap)
{
ret = exaTryDriverComposite(op, pSrc, pMask, pDst, xSrc, ySrc, xMask,
diff --git a/hw/xfree86/xaa/xaaPict.c b/hw/xfree86/xaa/xaaPict.c
index a1ff51087..a7acf450a 100644
--- a/hw/xfree86/xaa/xaaPict.c
+++ b/hw/xfree86/xaa/xaaPict.c
@@ -218,7 +218,13 @@ XAADoComposite (
if (pDst->alphaMap || pSrc->alphaMap || (pMask && pMask->alphaMap))
return FALSE;
-
+
+ if ((pSrc->repeat && pSrc->repeatType != RepeatNormal) ||
+ (pMask && pMask->repeat && pMask->repeatType != RepeatNormal))
+ {
+ return FALSE;
+ }
+
xDst += pDst->pDrawable->x;
yDst += pDst->pDrawable->y;
xSrc += pSrc->pDrawable->x;