From 7a0f8301c5b7de92b374707b53fdd474345c1693 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 30 Sep 2024 17:55:23 +0200 Subject: [PATCH] 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 Part-of: --- glamor/glamor_composite_glyphs.c | 5 ++--- glamor/glamor_egl.c | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/glamor/glamor_composite_glyphs.c b/glamor/glamor_composite_glyphs.c index 428303091..c1a0cb0f0 100644 --- a/glamor/glamor_composite_glyphs.c +++ b/glamor/glamor_composite_glyphs.c @@ -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); } diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c index 668eddc86..e6992deee 100644 --- a/glamor/glamor_egl.c +++ b/glamor/glamor_egl.c @@ -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;