summaryrefslogtreecommitdiff
path: root/exa
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2007-02-14 12:48:15 -0800
committerEric Anholt <eric@anholt.net>2007-02-14 12:48:15 -0800
commit81aa7f059d3cfd8d28420b7932b8ff7e06d67979 (patch)
tree2a460fa1e288ba825c3fa7eab0dd70dcb9e9f799 /exa
parenta5f19c5150a7b3dc2ff3ad759ee1a6ab0ad8925c (diff)
Add missing dirty marking in a couple of fallback cases in the exaGlyphs path.
Diffstat (limited to 'exa')
-rw-r--r--exa/exa_accel.c8
-rw-r--r--exa/exa_render.c10
2 files changed, 15 insertions, 3 deletions
diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index 6fa481ad0..e633d80a5 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -648,6 +648,14 @@ exaPolyFillRect(DrawablePtr pDrawable,
{
exaDoMigration (pixmaps, 1, FALSE);
ExaCheckPolyFillRect (pDrawable, pGC, nrect, prect);
+ while (nrect-- >= 0) {
+ exaDrawableDirty(pDrawable,
+ pDrawable->x + prect->x,
+ pDrawable->y + prect->y,
+ pDrawable->x + prect->x + prect->width,
+ pDrawable->y + prect->y + prect->height);
+ prect++;
+ }
return;
} else {
exaDoMigration (pixmaps, 1, TRUE);
diff --git a/exa/exa_render.c b/exa/exa_render.c
index a442987fe..b78d7282c 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -572,9 +572,7 @@ exaComposite(CARD8 op,
if (pExaScr->swappedOut ||
pSrc->pDrawable == NULL || (pMask != NULL && pMask->pDrawable == NULL))
{
- ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
- xMask, yMask, xDst, yDst, width, height);
- return;
+ goto fallback;
}
/* Remove repeat in source if useless */
@@ -683,12 +681,18 @@ exaComposite(CARD8 op,
}
}
+fallback:
#if DEBUG_TRACE_FALL
exaPrintCompositeFallback (op, pSrc, pMask, pDst);
#endif
ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
xMask, yMask, xDst, yDst, width, height);
+ exaDrawableDirty(pDst->pDrawable,
+ pDst->pDrawable->x + xDst,
+ pDst->pDrawable->y + yDst,
+ pDst->pDrawable->x + xDst + width,
+ pDst->pDrawable->y + yDst + height);
done:
pSrc->repeat = saveSrcRepeat;