xserver: Branch 'master' - 2 commits

Maarten Maathuis madman2003 at kemper.freedesktop.org
Tue Feb 17 10:25:47 PST 2009


 exa/exa.c           |   10 ++--------
 exa/exa_migration.c |   16 +++-------------
 2 files changed, 5 insertions(+), 21 deletions(-)

New commits:
commit 3175646b10c602d17d5dd37bdace7c1c7ee92b3d
Author: Maarten Maathuis <madman2003 at gmail.com>
Date:   Tue Feb 17 19:06:35 2009 +0100

    exa: exaPixmapDirty should use official damage functions.
    
    - Otherwise other users will not be notified of damage.

diff --git a/exa/exa.c b/exa/exa.c
index f1ccf9d..9329f10 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -160,14 +160,9 @@ exaGetDrawableDeltas (DrawablePtr pDrawable, PixmapPtr pPixmap,
 void
 exaPixmapDirty (PixmapPtr pPix, int x1, int y1, int x2, int y2)
 {
-    ExaPixmapPriv(pPix);
     BoxRec box;
-    RegionPtr pDamageReg;
     RegionRec region;
 
-    if (!pExaPixmap || !pExaPixmap->pDamage)
-	return;
-
     box.x1 = max(x1, 0);
     box.y1 = max(y1, 0);
     box.x2 = min(x2, pPix->drawable.width);
@@ -176,10 +171,9 @@ exaPixmapDirty (PixmapPtr pPix, int x1, int y1, int x2, int y2)
     if (box.x1 >= box.x2 || box.y1 >= box.y2)
 	return;
 
-    pDamageReg = DamageRegion(pExaPixmap->pDamage);
-
     REGION_INIT(pScreen, &region, &box, 1);
-    REGION_UNION(pScreen, pDamageReg, pDamageReg, &region);
+    DamageRegionAppend(&pPix->drawable, &region);
+    DamageRegionProcessPending(&pPix->drawable);
     REGION_UNINIT(pScreen, &region);
 }
 
commit 97c1cbc70216366e92b9371de608ce94e60aa874
Author: Maarten Maathuis <madman2003 at gmail.com>
Date:   Tue Feb 17 19:01:44 2009 +0100

    exa: the extent of the valid region is probably much larger than that of the pending damage.
    
    - Since the default has been changed from nothing to everything.

diff --git a/exa/exa_migration.c b/exa/exa_migration.c
index 9d0eda0..36b1a8c 100644
--- a/exa/exa_migration.c
+++ b/exa/exa_migration.c
@@ -174,23 +174,13 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
 #endif
 
 	    /* Try to prevent destination valid region from growing too many
-	     * rects by filling it up to the extents of the union of the
-	     * destination valid region and the pending damage region.
+	     * rects by filling it up to the extents of the pending damage region.
 	     */
 	    if (REGION_NUM_RECTS(pValidDst) > 10) {
-		BoxRec box;
-		BoxPtr pValidExt, pDamageExt;
+		BoxPtr pDamageExt = REGION_EXTENTS(pScreen, pending_damage);
 		RegionRec closure;
 
-		pValidExt = REGION_EXTENTS(pScreen, pValidDst);
-		pDamageExt = REGION_EXTENTS(pScreen, pending_damage);
-
-		box.x1 = min(pValidExt->x1, pDamageExt->x1);
-		box.y1 = min(pValidExt->y1, pDamageExt->y1);
-		box.x2 = max(pValidExt->x2, pDamageExt->x2);
-		box.y2 = max(pValidExt->y2, pDamageExt->y2);
-
-		REGION_INIT(pScreen, &closure, &box, 0);
+		REGION_INIT(pScreen, &closure, pDamageExt, 0);
 		REGION_INTERSECT(pScreen, &CopyReg, &CopyReg, &closure);
 	    } else
 		REGION_INTERSECT(pScreen, &CopyReg, &CopyReg, pending_damage);


More information about the xorg-commit mailing list