From 81aa7f059d3cfd8d28420b7932b8ff7e06d67979 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 14 Feb 2007 12:48:15 -0800 Subject: [PATCH] Add missing dirty marking in a couple of fallback cases in the exaGlyphs path. --- exa/exa_accel.c | 8 ++++++++ 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;