xserver: Branch 'master' - 2 commits
Eric Anholt
anholt at kemper.freedesktop.org
Wed Feb 14 22:52:49 EET 2007
exa/exa_accel.c | 8 ++++++++
exa/exa_render.c | 18 ++++++++++++------
2 files changed, 20 insertions(+), 6 deletions(-)
New commits:
diff-tree 81aa7f059d3cfd8d28420b7932b8ff7e06d67979 (from a5f19c5150a7b3dc2ff3ad759ee1a6ab0ad8925c)
Author: Eric Anholt <eric at anholt.net>
Date: Wed Feb 14 12:48:15 2007 -0800
Add missing dirty marking in a couple of fallback cases in the exaGlyphs path.
diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index 6fa481a..e633d80 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 a442987..b78d728 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;
diff-tree a5f19c5150a7b3dc2ff3ad759ee1a6ab0ad8925c (from a492d494f51caf15a5cb979dc335387486c105d1)
Author: Eric Anholt <eric at anholt.net>
Date: Wed Feb 14 10:39:46 2007 -0800
Mark sync when UploadToScreen succeeds in exaGlyphs().
diff --git a/exa/exa_render.c b/exa/exa_render.c
index 75108a7..a442987 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -995,15 +995,17 @@ exaGlyphs (CARD8 op,
* First we try to use UploadToScreen, if we can, then we fall back
* to a plain exaCopyArea in case of failure.
*/
- if (!pExaScr->info->UploadToScreen ||
- !exaPixmapIsOffscreen(pPixmap) ||
- !(*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
+ if (pExaScr->info->UploadToScreen &&
+ exaPixmapIsOffscreen(pPixmap) &&
+ (*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
glyph->info.width,
glyph->info.height,
glyphdata,
PixmapBytePad(glyph->info.width,
list->format->depth)))
{
+ exaMarkSync (pScreen);
+ } else {
/* Set up the scratch pixmap/GC for doing a CopyArea. */
if (pScratchPixmap == NULL) {
/* Get a scratch pixmap to wrap the original glyph data */
More information about the xorg-commit
mailing list