diff --git a/exa/exa_accel.c b/exa/exa_accel.c index d586fd804..c3cf36541 100644 --- a/exa/exa_accel.c +++ b/exa/exa_accel.c @@ -307,7 +307,7 @@ exaShmPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, unsigned int format, if (pending_damage) { REGION_INIT(pScreen, ®ion, &box, 1); - exaDamageDestForMigration(pPixmap, ®ion); + exaDamageDestForMigration(pDrawable, pPixmap, ®ion); } if (!exaDoShmPutImage(pDrawable, pGC, depth, format, w, h, sx, sy, sw, sh, diff --git a/exa/exa_migration.c b/exa/exa_migration.c index 013781581..2bb2ad94f 100644 --- a/exa/exa_migration.c +++ b/exa/exa_migration.c @@ -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); diff --git a/exa/exa_priv.h b/exa/exa_priv.h index 7decf8f66..ca7122be9 100644 --- a/exa/exa_priv.h +++ b/exa/exa_priv.h @@ -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 */ diff --git a/exa/exa_render.c b/exa/exa_render.c index 88ea29a0f..bafa30999 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -518,7 +518,7 @@ exaCompositeRects(CARD8 op, REGION_INIT(pScreen, ®ion, &box, 1); - exaDamageDestForMigration(pPixmap, ®ion); + exaDamageDestForMigration(pDst->pDrawable, pPixmap, ®ion); } /************************************************************/ @@ -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);