From 5d2315b6e6d41eba59c15c88d702172d424e8b19 Mon Sep 17 00:00:00 2001 From: Oleh Nykyforchyn Date: Fri, 18 Jul 2025 09:51:34 +0300 Subject: [PATCH] mi: midispcur.c.: move miDCCloseScreen to post-hooks This change is necessary to fix a segfault in intel driver at CloseScreen. sna_early_close_screen() releases the cursor using FreeCursor(), which needs miDCScreen private of pScreen. It has already been released by miDCCloseScreen(), which is a pre-hook, and segfault occurs. Hence it is necessary to move miDCCloseScreen() to post-hooks. Signed-off-by: Oleh Nykyforchyn --- mi/midispcur.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mi/midispcur.c b/mi/midispcur.c index 922e3a5b6a..56cc340bff 100644 --- a/mi/midispcur.c +++ b/mi/midispcur.c @@ -102,7 +102,7 @@ miDCInitialize(ScreenPtr pScreen, miPointerScreenFuncPtr screenFuncs) if (!pScreenPriv) return FALSE; - dixScreenHookClose(pScreen, miDCCloseScreen); + dixScreenHookPostClose(pScreen, miDCCloseScreen); dixSetPrivate(&pScreen->devPrivates, miDCScreenKey, pScreenPriv); if (!miSpriteInitialize(pScreen, screenFuncs)) { @@ -135,7 +135,7 @@ miDCSwitchScreenCursor(ScreenPtr pScreen, CursorPtr pCursor, PixmapPtr sourceBit static void miDCCloseScreen(CallbackListPtr *pcbl, ScreenPtr pScreen, void *unused) { - dixScreenUnhookClose(pScreen, miDCCloseScreen); + dixScreenUnhookPostClose(pScreen, miDCCloseScreen); miDCScreenPtr pScreenPriv; pScreenPriv = (miDCScreenPtr) dixLookupPrivate(&pScreen->devPrivates,