diff --git a/composite/compinit.c b/composite/compinit.c index c06284963..daf4a609d 100644 --- a/composite/compinit.c +++ b/composite/compinit.c @@ -78,10 +78,10 @@ compCloseScreen(ScreenPtr pScreen) pScreen->RealizeWindow = cs->RealizeWindow; pScreen->CreateWindow = cs->CreateWindow; pScreen->CopyWindow = cs->CopyWindow; - pScreen->PositionWindow = cs->PositionWindow; pScreen->SourceValidate = cs->SourceValidate; dixScreenUnhookWindowDestroy(pScreen, compWindowDestroy, NULL); + dixScreenUnhookWindowPosition(pScreen, compWindowPosition, NULL); free(cs); dixSetPrivate(&pScreen->devPrivates, CompScreenPrivateKey, NULL); @@ -370,9 +370,7 @@ compScreenInit(ScreenPtr pScreen) pScreen->backingStoreSupport = WhenMapped; dixScreenHookWindowDestroy(pScreen, compWindowDestroy, NULL); - - cs->PositionWindow = pScreen->PositionWindow; - pScreen->PositionWindow = compPositionWindow; + dixScreenHookWindowPosition(pScreen, compWindowPosition, NULL); cs->CopyWindow = pScreen->CopyWindow; pScreen->CopyWindow = compCopyWindow; diff --git a/composite/compint.h b/composite/compint.h index aeb43a4bf..6ccce3f82 100644 --- a/composite/compint.h +++ b/composite/compint.h @@ -125,7 +125,6 @@ typedef struct _CompImplicitRedirectException { } CompImplicitRedirectException; typedef struct _CompScreen { - PositionWindowProcPtr PositionWindow; CopyWindowProcPtr CopyWindow; CreateWindowProcPtr CreateWindow; RealizeWindowProcPtr RealizeWindow; @@ -279,8 +278,7 @@ void Bool compCheckRedirect(WindowPtr pWin); -Bool - compPositionWindow(WindowPtr pWin, int x, int y); +void compWindowPosition(ScreenPtr pScreen, WindowPtr pWin, void *arg, int32_t x, int32_t y); Bool compRealizeWindow(WindowPtr pWin); diff --git a/composite/compwindow.c b/composite/compwindow.c index 43884188a..2e7ce41c0 100644 --- a/composite/compwindow.c +++ b/composite/compwindow.c @@ -224,14 +224,8 @@ updateOverlayWindow(ScreenPtr pScreen) return Success; } -Bool -compPositionWindow(WindowPtr pWin, int x, int y) +void compWindowPosition(ScreenPtr pScreen, WindowPtr pWin, void *arg, int32_t x, int32_t y) { - ScreenPtr pScreen = pWin->drawable.pScreen; - CompScreenPtr cs = GetCompScreen(pScreen); - Bool ret = TRUE; - - pScreen->PositionWindow = cs->PositionWindow; /* * "Shouldn't need this as all possible places should be wrapped * @@ -255,14 +249,8 @@ compPositionWindow(WindowPtr pWin, int x, int y) } } - if (!(*pScreen->PositionWindow) (pWin, x, y)) - ret = FALSE; - cs->PositionWindow = pScreen->PositionWindow; - pScreen->PositionWindow = compPositionWindow; compCheckTree(pWin->drawable.pScreen); - if (updateOverlayWindow(pScreen) != Success) - ret = FALSE; - return ret; + updateOverlayWindow(pScreen); } Bool