glamor: 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:
Enrico Weigelt, metux IT consult 2024-09-30 17:55:23 +02:00
parent 08ec122fa7
commit 7a0f8301c5
2 changed files with 6 additions and 7 deletions

View File

@ -436,7 +436,7 @@ glamor_composite_glyphs(CARD8 op,
glyphs_queued = 0;
}
if (glyph_atlas->atlas) {
(*screen->DestroyPixmap)(glyph_atlas->atlas);
dixDestroyPixmap(glyph_atlas->atlas, 0);
glyph_atlas->atlas = NULL;
}
}
@ -571,8 +571,7 @@ glamor_free_glyph_atlas(struct glamor_glyph_atlas *atlas)
{
if (!atlas)
return;
if (atlas->atlas)
(*atlas->atlas->drawable.pScreen->DestroyPixmap)(atlas->atlas);
dixDestroyPixmap(atlas->atlas, 0);
free (atlas);
}

View File

@ -346,7 +346,7 @@ glamor_make_pixmap_exportable(PixmapPtr pixmap, Bool modifiers_ok)
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"Failed to make %dx%dx%dbpp pixmap from GBM bo\n",
width, height, pixmap->drawable.bitsPerPixel);
screen->DestroyPixmap(exported);
dixDestroyPixmap(exported, 0);
gbm_bo_destroy(bo);
return FALSE;
}
@ -367,7 +367,7 @@ glamor_make_pixmap_exportable(PixmapPtr pixmap, Bool modifiers_ok)
/* Swap the devKind into the original pixmap, reflecting the bo's stride */
screen->ModifyPixmapHeader(pixmap, 0, 0, 0, 0, exported->devKind, NULL);
screen->DestroyPixmap(exported);
dixDestroyPixmap(exported, 0);
return TRUE;
}
@ -632,7 +632,7 @@ glamor_pixmap_from_fds(ScreenPtr screen,
error:
if (ret == FALSE) {
screen->DestroyPixmap(pixmap);
dixDestroyPixmap(pixmap, 0);
return NULL;
}
return pixmap;
@ -654,7 +654,7 @@ glamor_pixmap_from_fd(ScreenPtr screen,
stride, depth, bpp);
if (ret == FALSE) {
screen->DestroyPixmap(pixmap);
dixDestroyPixmap(pixmap, 0);
return NULL;
}
return pixmap;