diff --git a/miext/shadow/shadow.c b/miext/shadow/shadow.c index c0f08780a..d3702f523 100644 --- a/miext/shadow/shadow.c +++ b/miext/shadow/shadow.c @@ -23,8 +23,10 @@ #include #include +#include + +#include "dix/screen_hooks_priv.h" -#include #include "scrnintstr.h" #include "windowstr.h" #include "dixfontstr.h" @@ -93,19 +95,17 @@ shadowGetImage(DrawablePtr pDrawable, int sx, int sy, int w, int h, wrap(pBuf, pScreen, GetImage); } -static Bool -shadowCloseScreen(ScreenPtr pScreen) +static void shadowCloseScreen(CallbackListPtr *pcbl, ScreenPtr pScreen, void *unused) { - shadowBuf(pScreen); + dixScreenUnhookClose(pScreen, shadowCloseScreen); + shadowBuf(pScreen); unwrap(pBuf, pScreen, GetImage); - unwrap(pBuf, pScreen, CloseScreen); unwrap(pBuf, pScreen, BlockHandler); shadowRemove(pScreen, pBuf->pPixmap); DamageDestroy(pBuf->pDamage); dixDestroyPixmap(pBuf->pPixmap, 0); free(pBuf); - return pScreen->CloseScreen(pScreen); } Bool @@ -130,7 +130,8 @@ shadowSetup(ScreenPtr pScreen) return FALSE; } - wrap(pBuf, pScreen, CloseScreen); + dixScreenHookClose(pScreen, shadowCloseScreen); + wrap(pBuf, pScreen, GetImage); wrap(pBuf, pScreen, BlockHandler); pBuf->update = 0; diff --git a/miext/shadow/shadow.h b/miext/shadow/shadow.h index c08e1537c..b80520f77 100644 --- a/miext/shadow/shadow.h +++ b/miext/shadow/shadow.h @@ -53,7 +53,6 @@ typedef struct _shadowBuf { /* screen wrappers */ GetImageProcPtr GetImage; - CloseScreenProcPtr CloseScreen; ScreenBlockHandlerProcPtr BlockHandler; } shadowBufRec;