diff --git a/Xext/shm.c b/Xext/shm.c index 0fcae5fa8d..106a6ec5ff 100644 --- a/Xext/shm.c +++ b/Xext/shm.c @@ -203,6 +203,7 @@ ShmScreenClose(CallbackListPtr *pcbl, ScreenPtr pScreen, void *unused) dixSetPrivate(&pScreen->devPrivates, shmScrPrivateKey, NULL); free(screen_priv); + dixScreenUnhookClose(pScreen, ShmScreenClose); } static ShmScrPrivateRec * @@ -1401,6 +1402,7 @@ ShmExtensionInit(void) screen_priv->shmFuncs = &miFuncs; if (!screen_priv->shmFuncs->CreatePixmap) sharedPixmaps = xFalse; + dixScreenHookClose(walkScreen, ShmScreenClose); }); if (sharedPixmaps) DIX_FOR_EACH_SCREEN({