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.
This commit is contained in:
Maarten Maathuis 2009-02-17 19:01:44 +01:00
parent 4039603413
commit 97c1cbc702

View File

@ -174,23 +174,13 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
#endif #endif
/* Try to prevent destination valid region from growing too many /* Try to prevent destination valid region from growing too many
* rects by filling it up to the extents of the union of the * rects by filling it up to the extents of the pending damage region.
* destination valid region and the pending damage region.
*/ */
if (REGION_NUM_RECTS(pValidDst) > 10) { if (REGION_NUM_RECTS(pValidDst) > 10) {
BoxRec box; BoxPtr pDamageExt = REGION_EXTENTS(pScreen, pending_damage);
BoxPtr pValidExt, pDamageExt;
RegionRec closure; RegionRec closure;
pValidExt = REGION_EXTENTS(pScreen, pValidDst); REGION_INIT(pScreen, &closure, pDamageExt, 0);
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_INTERSECT(pScreen, &CopyReg, &CopyReg, &closure); REGION_INTERSECT(pScreen, &CopyReg, &CopyReg, &closure);
} else } else
REGION_INTERSECT(pScreen, &CopyReg, &CopyReg, pending_damage); REGION_INTERSECT(pScreen, &CopyReg, &CopyReg, pending_damage);