diff --git a/glx/glxscreens.c b/glx/glxscreens.c index ef969fcd6..6c08c5f07 100644 --- a/glx/glxscreens.c +++ b/glx/glxscreens.c @@ -30,6 +30,8 @@ #include +#include "dix/screen_hooks_priv.h" + #include #include #include @@ -157,16 +159,11 @@ static const char GLServerExtensions[] = "GL_SGIX_shadow_ambient " "GL_SUN_slice_accum "; -static Bool -glxCloseScreen(ScreenPtr pScreen) +static void glxCloseScreen(CallbackListPtr *pcbl, ScreenPtr pScreen, void *unused) { __GLXscreen *pGlxScreen = glxGetScreen(pScreen); - - pScreen->CloseScreen = pGlxScreen->CloseScreen; - + dixScreenUnhookClose(pScreen, glxCloseScreen); pGlxScreen->destroy(pGlxScreen); - - return pScreen->CloseScreen(pScreen); } __GLXscreen * @@ -327,8 +324,7 @@ __glXScreenInit(__GLXscreen * pGlxScreen, ScreenPtr pScreen) pGlxScreen->GLextensions = strdup(GLServerExtensions); pGlxScreen->GLXextensions = NULL; - pGlxScreen->CloseScreen = pScreen->CloseScreen; - pScreen->CloseScreen = glxCloseScreen; + dixScreenHookClose(pScreen, glxCloseScreen); i = 0; for (m = pGlxScreen->fbconfigs; m != NULL; m = m->next) { diff --git a/glx/glxscreens.h b/glx/glxscreens.h index 40649f88d..82f99f9df 100644 --- a/glx/glxscreens.h +++ b/glx/glxscreens.h @@ -149,8 +149,6 @@ struct __GLXscreen { char *GLXextensions; char *glvnd; unsigned char glx_enable_bits[__GLX_EXT_BYTES]; - - Bool (*CloseScreen) (ScreenPtr pScreen); }; void __glXScreenInit(__GLXscreen * screen, ScreenPtr pScreen);