From 5dc79405b58a54c05175ff14451f2880265312fd Mon Sep 17 00:00:00 2001 From: Oleh Nykyforchyn Date: Fri, 18 Jul 2025 09:50:32 +0300 Subject: [PATCH] render: picture.c.: move PictureScreenClose to post-hooks This change is necessary to fix a segfault in intel driver at CloseScreen. sna_early_close_screen() releases the glyph cache using FreePicture(), which needs PictureScreen private of pScreen. It has already been released by PictureScreenClose(), which is a pre-hook, and segfault occurs. Hence it is necessary to move PictureScreenClose() to post-hooks. Signed-off-by: Oleh Nykyforchyn --- render/picture.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/render/picture.c b/render/picture.c index 3f4d01cadf..adad1f4a67 100644 --- a/render/picture.c +++ b/render/picture.c @@ -89,7 +89,7 @@ static void PictureScreenClose(CallbackListPtr *pcbl, ScreenPtr pScreen, void *u SetPictureScreen(pScreen, 0); free(ps->formats); free(ps); - dixScreenUnhookClose(pScreen, PictureScreenClose); + dixScreenUnhookPostClose(pScreen, PictureScreenClose); } static void @@ -683,7 +683,7 @@ PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats) pScreen->StoreColors = PictureStoreColors; dixScreenHookWindowDestroy(pScreen, picture_window_destructor); - dixScreenHookClose(pScreen, PictureScreenClose); + dixScreenHookPostClose(pScreen, PictureScreenClose); if (!PictureSetDefaultFilters(pScreen)) { PictureResetFilters(pScreen);