(!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
							
								
									c4f89e4edc
								
							
						
					
					
						commit
						a801164bf5
					
				|  | @ -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; | ||||
|  |  | |||
|  | @ -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