EXA: Fix up some issues introduced by 00fe4a2977.

* Check all pixmaps involved for damage records, fixes visual corruption due to
  the screen pixmap never having one.
* Fix an array size and remove a now superfluous assignment.
This commit is contained in:
Michel Dänzer 2009-07-21 12:55:27 +02:00
parent be4dd35ffe
commit de7a14ca92
2 changed files with 8 additions and 6 deletions

View File

@ -455,7 +455,7 @@ exaHWCopyNtoN (DrawablePtr pSrcDrawable,
} }
} }
if (pDstExaPixmap->pDamage) { if (pDstExaPixmap->pDamage || pSrcExaPixmap->pDamage) {
ExaMigrationRec pixmaps[2]; ExaMigrationRec pixmaps[2];
pixmaps[0].as_dst = TRUE; pixmaps[0].as_dst = TRUE;
@ -810,7 +810,7 @@ exaPolyFillRect(DrawablePtr pDrawable,
} }
if (pExaPixmap->pDamage) { if (pExaPixmap->pDamage) {
ExaMigrationRec pixmaps[2]; ExaMigrationRec pixmaps[1];
pixmaps[0].as_dst = TRUE; pixmaps[0].as_dst = TRUE;
pixmaps[0].as_src = FALSE; pixmaps[0].as_src = FALSE;
@ -1080,7 +1080,7 @@ exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
if (pExaPixmap->accel_blocked || pTileExaPixmap->accel_blocked) if (pExaPixmap->accel_blocked || pTileExaPixmap->accel_blocked)
{ {
return FALSE; return FALSE;
} else if (pExaPixmap->pDamage) { } else if (pExaPixmap->pDamage || pTileExaPixmap->pDamage) {
ExaMigrationRec pixmaps[2]; ExaMigrationRec pixmaps[2];
pixmaps[0].as_dst = TRUE; pixmaps[0].as_dst = TRUE;
@ -1255,7 +1255,7 @@ exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
pixmaps[0].as_dst = FALSE; pixmaps[0].as_dst = FALSE;
pixmaps[0].as_src = TRUE; pixmaps[0].as_src = TRUE;
pixmaps[0].pPix = pPix = exaGetDrawablePixmap (pDrawable); pixmaps[0].pPix = pPix;
pixmaps[0].pReg = &Reg; pixmaps[0].pReg = &Reg;
exaDoMigration(pixmaps, 1, FALSE); exaDoMigration(pixmaps, 1, FALSE);

View File

@ -377,7 +377,8 @@ exaTryDriverCompositeRects(CARD8 op,
return -1; return -1;
} }
if (pDstExaPix->pDamage) { if (pSrcExaPix->pDamage || pDstExaPix->pDamage ||
(pMask && pMaskExaPix->pDamage)) {
ExaMigrationRec pixmaps[3]; ExaMigrationRec pixmaps[3];
pixmaps[0].as_dst = TRUE; pixmaps[0].as_dst = TRUE;
@ -670,7 +671,8 @@ exaTryDriverComposite(CARD8 op,
REGION_TRANSLATE(pScreen, &region, dst_off_x, dst_off_y); REGION_TRANSLATE(pScreen, &region, dst_off_x, dst_off_y);
if (pDstExaPix->pDamage) { if (pSrcExaPix->pDamage || pDstExaPix->pDamage ||
(pMask && pMaskExaPix->pDamage)) {
ExaMigrationRec pixmaps[3]; ExaMigrationRec pixmaps[3];
pixmaps[0].as_dst = TRUE; pixmaps[0].as_dst = TRUE;