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:
parent
7c14fdbacf
commit
dd1e54d6ee
|
@ -307,7 +307,7 @@ exaShmPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, unsigned int format,
|
||||||
|
|
||||||
if (pending_damage) {
|
if (pending_damage) {
|
||||||
REGION_INIT(pScreen, ®ion, &box, 1);
|
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,
|
if (!exaDoShmPutImage(pDrawable, pGC, depth, format, w, h, sx, sy, sw, sh,
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -518,7 +518,7 @@ exaCompositeRects(CARD8 op,
|
||||||
|
|
||||||
REGION_INIT(pScreen, ®ion, &box, 1);
|
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;
|
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);
|
||||||
|
|
Loading…
Reference in New Issue