exa: direct access to the pixmap sys ptr is bad if the pixmap isn't mapped

This commit is contained in:
Dave Airlie 2007-10-03 12:00:16 +10:00
parent 566dd3b7d7
commit 1365aeff54

View File

@ -1138,17 +1138,19 @@ exaFillRegionSolid (DrawablePtr pDrawable,
pDrawable->bitsPerPixel != 24) { pDrawable->bitsPerPixel != 24) {
ExaPixmapPriv(pPixmap); ExaPixmapPriv(pPixmap);
exaPrepareAccess(pDrawable, EXA_PREPARE_DEST);
switch (pDrawable->bitsPerPixel) { switch (pDrawable->bitsPerPixel) {
case 32: case 32:
*(CARD32*)pExaPixmap->sys_ptr = pixel; *(CARD32*)pPixmap->devPrivate.ptr = pixel;
break; break;
case 16: case 16:
*(CARD16*)pExaPixmap->sys_ptr = pixel; *(CARD16*)pPixmap->devPrivate.ptr = pixel;
break; break;
case 8: case 8:
*(CARD8*)pExaPixmap->sys_ptr = pixel; *(CARD8*)pPixmap->devPrivate.ptr = pixel;
} }
exaFinishAccess(pDrawable, EXA_PREPARE_DEST);
REGION_UNION(pScreen, &pExaPixmap->validSys, &pExaPixmap->validSys, REGION_UNION(pScreen, &pExaPixmap->validSys, &pExaPixmap->validSys,
pRegion); pRegion);
} }