exa: fix thinko from 988725f32e

- the drawable of the pixmap is not the same as the original drawable (possibly a DRAWABLE_WINDOW)
This commit is contained in:
Maarten Maathuis 2008-08-26 20:02:55 +02:00
parent 7c14fdbacf
commit dd1e54d6ee
4 changed files with 8 additions and 8 deletions

View File

@ -307,7 +307,7 @@ exaShmPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, unsigned int format,
if (pending_damage) {
REGION_INIT(pScreen, &region, &box, 1);
exaDamageDestForMigration(pPixmap, &region);
exaDamageDestForMigration(pDrawable, pPixmap, &region);
}
if (!exaDoShmPutImage(pDrawable, pGC, depth, format, w, h, sx, sy, sw, sh,

View File

@ -53,9 +53,9 @@
* because their calls are wrapped by the damage layer.
*/
Bool
exaDamageDestForMigration(PixmapPtr pPix, RegionPtr region)
exaDamageDestForMigration(DrawablePtr pDrawable, PixmapPtr pPix, RegionPtr region)
{
ScreenPtr pScreen = pPix->drawable.pScreen;
ScreenPtr pScreen = pDrawable->pScreen;
(void) pScreen; /* the macros don't use pScreen currently */
ExaPixmapPriv (pPix);
int x_offset, y_offset;
@ -64,7 +64,7 @@ exaDamageDestForMigration(PixmapPtr pPix, RegionPtr region)
if (!pExaPixmap->pDamage)
return FALSE;
exaGetDrawableDeltas(&pPix->drawable, pPix, &x_offset, &y_offset);
exaGetDrawableDeltas(pDrawable, pPix, &x_offset, &y_offset);
REGION_TRANSLATE(pScreen, region, x_offset, y_offset);
pending_damage = DamagePendingRegion(pExaPixmap->pDamage);

View File

@ -504,6 +504,6 @@ void
exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area);
Bool
exaDamageDestForMigration(PixmapPtr pPix, RegionPtr region);
exaDamageDestForMigration(DrawablePtr pDrawable, PixmapPtr pPix, RegionPtr region);
#endif /* EXAPRIV_H */

View File

@ -518,7 +518,7 @@ exaCompositeRects(CARD8 op,
REGION_INIT(pScreen, &region, &box, 1);
exaDamageDestForMigration(pPixmap, &region);
exaDamageDestForMigration(pDst->pDrawable, pPixmap, &region);
}
/************************************************************/
@ -1073,7 +1073,7 @@ exaTrapezoids (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
bounds.y2 += pDraw->y;
REGION_INIT(pScreen, &migration, &bounds, 1);
exaDamageDestForMigration(pixmap, &migration);
exaDamageDestForMigration(pDraw, pixmap, &migration);
}
exaPrepareAccess(pDraw, EXA_PREPARE_DEST);
@ -1177,7 +1177,7 @@ exaTriangles (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
bounds.y2 += pDraw->y;
REGION_INIT(pScreen, &migration, &bounds, 1);
exaDamageDestForMigration(pixmap, &migration);
exaDamageDestForMigration(pDraw, pixmap, &migration);
}
exaPrepareAccess(pDraw, EXA_PREPARE_DEST);