diff options
author | Eric Anholt <eric@anholt.net> | 2007-02-14 12:48:15 -0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2007-02-14 12:48:15 -0800 |
commit | 81aa7f059d3cfd8d28420b7932b8ff7e06d67979 (patch) | |
tree | 2a460fa1e288ba825c3fa7eab0dd70dcb9e9f799 /exa | |
parent | a5f19c5150a7b3dc2ff3ad759ee1a6ab0ad8925c (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.c | 8 | ||||
-rw-r--r-- | exa/exa_render.c | 10 |
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; |