(!1714) composite: use window position notify hook
Wrapping ScreenRec's function pointers is problematic for many reasons, so use the new window position notify hook instead. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
		
							parent
							
								
									b13b8dad07
								
							
						
					
					
						commit
						7a91790f2e
					
				| 
						 | 
				
			
			@ -76,10 +76,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);
 | 
			
		||||
| 
						 | 
				
			
			@ -368,9 +368,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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue