render: use dixDestroyPixmap() instead of direct driver call
Direct calls to ScreenRec->DestroyPixmap() blocks cleaning up the wrapping jungle, so use the proper dix function instead. See: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1754 Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net> Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1711>
This commit is contained in:
parent
d2a93d0346
commit
c8607ca66f
|
@ -608,7 +608,7 @@ miGlyphs(CARD8 op,
|
||||||
maskFormat, CPComponentAlpha, &component_alpha,
|
maskFormat, CPComponentAlpha, &component_alpha,
|
||||||
serverClient, &error);
|
serverClient, &error);
|
||||||
if (!pMask) {
|
if (!pMask) {
|
||||||
(*pScreen->DestroyPixmap) (pMaskPixmap);
|
dixDestroyPixmap(pMaskPixmap, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pGC = GetScratchGC(pMaskPixmap->drawable.depth, pScreen);
|
pGC = GetScratchGC(pMaskPixmap->drawable.depth, pScreen);
|
||||||
|
@ -676,7 +676,7 @@ miGlyphs(CARD8 op,
|
||||||
xSrc + x - xDst,
|
xSrc + x - xDst,
|
||||||
ySrc + y - yDst, 0, 0, x, y, width, height);
|
ySrc + y - yDst, 0, 0, x, y, width, height);
|
||||||
FreePicture((void *) pMask, (XID) 0);
|
FreePicture((void *) pMask, (XID) 0);
|
||||||
(*pScreen->DestroyPixmap) (pMaskPixmap);
|
dixDestroyPixmap(pMaskPixmap, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ miChangePictureClip(PicturePtr pPicture, int type, void *value, int n)
|
||||||
clientClip = BitmapToRegion(pScreen, (PixmapPtr) value);
|
clientClip = BitmapToRegion(pScreen, (PixmapPtr) value);
|
||||||
if (!clientClip)
|
if (!clientClip)
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
(*pScreen->DestroyPixmap) ((PixmapPtr) value);
|
dixDestroyPixmap((PixmapPtr) value, 0);
|
||||||
break;
|
break;
|
||||||
case CT_REGION:
|
case CT_REGION:
|
||||||
clientClip = value;
|
clientClip = value;
|
||||||
|
|
|
@ -1416,7 +1416,7 @@ FreePicture(void *value, XID pid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pPicture->pDrawable->type == DRAWABLE_PIXMAP) {
|
else if (pPicture->pDrawable->type == DRAWABLE_PIXMAP) {
|
||||||
(*pScreen->DestroyPixmap) ((PixmapPtr) pPicture->pDrawable);
|
dixDestroyPixmap((PixmapPtr) pPicture->pDrawable, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dixFreeObjectWithPrivates(pPicture, PRIVATE_PICTURE);
|
dixFreeObjectWithPrivates(pPicture, PRIVATE_PICTURE);
|
||||||
|
|
|
@ -1137,7 +1137,7 @@ ProcRenderAddGlyphs(ClientPtr client)
|
||||||
|
|
||||||
/* The picture takes a reference to the pixmap, so we
|
/* The picture takes a reference to the pixmap, so we
|
||||||
drop ours. */
|
drop ours. */
|
||||||
(pScreen->DestroyPixmap) (pDstPix);
|
dixDestroyPixmap(pDstPix, 0);
|
||||||
pDstPix = NULL;
|
pDstPix = NULL;
|
||||||
|
|
||||||
if (!pDst) {
|
if (!pDst) {
|
||||||
|
@ -1542,7 +1542,7 @@ ProcRenderCreateCursor(ClientPtr client)
|
||||||
free(mskbits);
|
free(mskbits);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
(*pScreen->DestroyPixmap) (pPixmap);
|
dixDestroyPixmap(pPixmap, 0);
|
||||||
CompositePicture(PictOpSrc,
|
CompositePicture(PictOpSrc,
|
||||||
pSrc, 0, pPicture, 0, 0, 0, 0, 0, 0, width, height);
|
pSrc, 0, pPicture, 0, 0, 0, 0, 0, 0, width, height);
|
||||||
(*pScreen->GetImage) (pPicture->pDrawable,
|
(*pScreen->GetImage) (pPicture->pDrawable,
|
||||||
|
|
Loading…
Reference in New Issue