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) { if (pending_damage) {
REGION_INIT(pScreen, &region, &box, 1); 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, 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. * because their calls are wrapped by the damage layer.
*/ */
Bool 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 */ (void) pScreen; /* the macros don't use pScreen currently */
ExaPixmapPriv (pPix); ExaPixmapPriv (pPix);
int x_offset, y_offset; int x_offset, y_offset;
@ -64,7 +64,7 @@ exaDamageDestForMigration(PixmapPtr pPix, RegionPtr region)
if (!pExaPixmap->pDamage) if (!pExaPixmap->pDamage)
return FALSE; 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); REGION_TRANSLATE(pScreen, region, x_offset, y_offset);
pending_damage = DamagePendingRegion(pExaPixmap->pDamage); pending_damage = DamagePendingRegion(pExaPixmap->pDamage);

View File

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

View File

@ -518,7 +518,7 @@ exaCompositeRects(CARD8 op,
REGION_INIT(pScreen, &region, &box, 1); 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; bounds.y2 += pDraw->y;
REGION_INIT(pScreen, &migration, &bounds, 1); REGION_INIT(pScreen, &migration, &bounds, 1);
exaDamageDestForMigration(pixmap, &migration); exaDamageDestForMigration(pDraw, pixmap, &migration);
} }
exaPrepareAccess(pDraw, EXA_PREPARE_DEST); exaPrepareAccess(pDraw, EXA_PREPARE_DEST);
@ -1177,7 +1177,7 @@ exaTriangles (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
bounds.y2 += pDraw->y; bounds.y2 += pDraw->y;
REGION_INIT(pScreen, &migration, &bounds, 1); REGION_INIT(pScreen, &migration, &bounds, 1);
exaDamageDestForMigration(pixmap, &migration); exaDamageDestForMigration(pDraw, pixmap, &migration);
} }
exaPrepareAccess(pDraw, EXA_PREPARE_DEST); exaPrepareAccess(pDraw, EXA_PREPARE_DEST);