From e76bf69e5e4a1639f9151cf07474b2bc4f9614b8 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Fri, 27 Sep 2024 19:09:59 +0200 Subject: [PATCH] Xext: shm: use CloseScreen hook Wrapping ScreenRec's function pointers is problematic for many reasons, so use the new screen close notify hook instead. Signed-off-by: Enrico Weigelt, metux IT consult --- Xext/shm.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/Xext/shm.c b/Xext/shm.c index 6d07097df..e63f98204 100644 --- a/Xext/shm.c +++ b/Xext/shm.c @@ -96,7 +96,6 @@ in this Software without prior written authorization from The Open Group. #endif /* XINERAMA */ typedef struct _ShmScrPrivateRec { - CloseScreenProcPtr CloseScreen; ShmFuncsPtr shmFuncs; DestroyPixmapProcPtr destroyPixmap; } ShmScrPrivateRec; @@ -196,15 +195,13 @@ CheckForShmSyscall(void) #endif -static Bool -ShmCloseScreen(ScreenPtr pScreen) +static void +ShmScreenClose(ScreenPtr pScreen, void *arg) { ShmScrPrivateRec *screen_priv = ShmGetScreenPriv(pScreen); - pScreen->CloseScreen = screen_priv->CloseScreen; dixSetPrivate(&pScreen->devPrivates, shmScrPrivateKey, NULL); free(screen_priv); - return (*pScreen->CloseScreen) (pScreen); } static ShmScrPrivateRec * @@ -214,9 +211,8 @@ ShmInitScreenPriv(ScreenPtr pScreen) if (!screen_priv) { screen_priv = calloc(1, sizeof(ShmScrPrivateRec)); - screen_priv->CloseScreen = pScreen->CloseScreen; dixSetPrivate(&pScreen->devPrivates, shmScrPrivateKey, screen_priv); - pScreen->CloseScreen = ShmCloseScreen; + dixScreenHookClose(pScreen, ShmScreenClose, NULL); } return screen_priv; }