exa: 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
4694b8488e
commit
9ca03e6da0
|
@ -194,7 +194,7 @@ exaRealizeGlyphCaches(ScreenPtr pScreen, unsigned int format)
|
||||||
CPComponentAlpha, &component_alpha, serverClient,
|
CPComponentAlpha, &component_alpha, serverClient,
|
||||||
&error);
|
&error);
|
||||||
|
|
||||||
(*pScreen->DestroyPixmap) (pPixmap); /* picture holds a refcount */
|
dixDestroyPixmap(pPixmap, 0); /* picture holds a refcount */
|
||||||
|
|
||||||
if (!pPicture)
|
if (!pPicture)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -728,7 +728,7 @@ exaGlyphs(CARD8 op,
|
||||||
{
|
{
|
||||||
PictFormatPtr argbFormat;
|
PictFormatPtr argbFormat;
|
||||||
|
|
||||||
(*pScreen->DestroyPixmap) (pMaskPixmap);
|
dixDestroyPixmap(pMaskPixmap, 0);
|
||||||
|
|
||||||
if (!pMask)
|
if (!pMask)
|
||||||
return;
|
return;
|
||||||
|
@ -751,7 +751,7 @@ exaGlyphs(CARD8 op,
|
||||||
pMask = CreatePicture(0, &pMaskPixmap->drawable, maskFormat, 0, 0,
|
pMask = CreatePicture(0, &pMaskPixmap->drawable, maskFormat, 0, 0,
|
||||||
serverClient, &error);
|
serverClient, &error);
|
||||||
if (!pMask) {
|
if (!pMask) {
|
||||||
(*pScreen->DestroyPixmap) (pMaskPixmap);
|
dixDestroyPixmap(pMaskPixmap, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -832,6 +832,6 @@ exaGlyphs(CARD8 op,
|
||||||
xSrc + x - first_xOff,
|
xSrc + x - first_xOff,
|
||||||
ySrc + y - first_yOff, 0, 0, x, y, width, height);
|
ySrc + y - first_yOff, 0, 0, x, y, width, height);
|
||||||
FreePicture((void *) pMask, (XID) 0);
|
FreePicture((void *) pMask, (XID) 0);
|
||||||
(*pScreen->DestroyPixmap) (pMaskPixmap);
|
dixDestroyPixmap(pMaskPixmap, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -614,7 +614,7 @@ ExaOffscreenDefragment(ScreenPtr pScreen)
|
||||||
pDstPix->drawable.depth = 0;
|
pDstPix->drawable.depth = 0;
|
||||||
pDstPix->drawable.bitsPerPixel = 0;
|
pDstPix->drawable.bitsPerPixel = 0;
|
||||||
|
|
||||||
(*pScreen->DestroyPixmap) (pDstPix);
|
dixDestroyPixmap(pDstPix, 0);
|
||||||
|
|
||||||
if (area->state == ExaOffscreenAvail && area->size > largest_size)
|
if (area->state == ExaOffscreenAvail && area->size > largest_size)
|
||||||
return area;
|
return area;
|
||||||
|
|
|
@ -1082,7 +1082,7 @@ exaCreateAlphaPicture(ScreenPtr pScreen,
|
||||||
return 0;
|
return 0;
|
||||||
pGC = GetScratchGC(pPixmap->drawable.depth, pScreen);
|
pGC = GetScratchGC(pPixmap->drawable.depth, pScreen);
|
||||||
if (!pGC) {
|
if (!pGC) {
|
||||||
(*pScreen->DestroyPixmap) (pPixmap);
|
dixDestroyPixmap(pPixmap, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
ValidateGC(&pPixmap->drawable, pGC);
|
ValidateGC(&pPixmap->drawable, pGC);
|
||||||
|
@ -1095,7 +1095,7 @@ exaCreateAlphaPicture(ScreenPtr pScreen,
|
||||||
FreeScratchGC(pGC);
|
FreeScratchGC(pGC);
|
||||||
pPicture = CreatePicture(0, &pPixmap->drawable, pPictFormat,
|
pPicture = CreatePicture(0, &pPixmap->drawable, pPictFormat,
|
||||||
0, 0, serverClient, &error);
|
0, 0, serverClient, &error);
|
||||||
(*pScreen->DestroyPixmap) (pPixmap);
|
dixDestroyPixmap(pPixmap, 0);
|
||||||
return pPicture;
|
return pPicture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue