(!1711) composite: use dixDestroyPixmap() instead of direct driver call
Direct calls to ScreenRec->DestroyPixmap() blocks cleaning up the wrapping jungle, so use the proper dix function instead. See: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1754 Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
		
							parent
							
								
									241061e0f1
								
							
						
					
					
						commit
						283e3ec0bc
					
				|  | @ -308,7 +308,7 @@ compFreeClientWindow(WindowPtr pWin, XID id) | ||||||
| 
 | 
 | ||||||
|     if (pPixmap) { |     if (pPixmap) { | ||||||
|         compRestoreWindow(pWin, pPixmap); |         compRestoreWindow(pWin, pPixmap); | ||||||
|         (*pScreen->DestroyPixmap) (pPixmap); |         dixDestroyPixmap(pPixmap, 0); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -180,7 +180,7 @@ compCheckRedirect(WindowPtr pWin) | ||||||
| 
 | 
 | ||||||
|             compSetParentPixmap(pWin); |             compSetParentPixmap(pWin); | ||||||
|             compRestoreWindow(pWin, pPixmap); |             compRestoreWindow(pWin, pPixmap); | ||||||
|             (*pScreen->DestroyPixmap) (pPixmap); |             dixDestroyPixmap(pPixmap, 0); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     else if (should) { |     else if (should) { | ||||||
|  | @ -378,13 +378,11 @@ compImplicitRedirect(WindowPtr pWin, WindowPtr pParent) | ||||||
| static void | static void | ||||||
| compFreeOldPixmap(WindowPtr pWin) | compFreeOldPixmap(WindowPtr pWin) | ||||||
| { | { | ||||||
|     ScreenPtr pScreen = pWin->drawable.pScreen; |  | ||||||
| 
 |  | ||||||
|     if (pWin->redirectDraw != RedirectDrawNone) { |     if (pWin->redirectDraw != RedirectDrawNone) { | ||||||
|         CompWindowPtr cw = GetCompWindow(pWin); |         CompWindowPtr cw = GetCompWindow(pWin); | ||||||
| 
 | 
 | ||||||
|         if (cw->pOldPixmap) { |         if (cw->pOldPixmap) { | ||||||
|             (*pScreen->DestroyPixmap) (cw->pOldPixmap); |             dixDestroyPixmap(cw->pOldPixmap, 0); | ||||||
|             cw->pOldPixmap = NullPixmap; |             cw->pOldPixmap = NullPixmap; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | @ -617,7 +615,7 @@ compDestroyWindow(WindowPtr pWin) | ||||||
|         PixmapPtr pPixmap = (*pScreen->GetWindowPixmap) (pWin); |         PixmapPtr pPixmap = (*pScreen->GetWindowPixmap) (pWin); | ||||||
| 
 | 
 | ||||||
|         compSetParentPixmap(pWin); |         compSetParentPixmap(pWin); | ||||||
|         (*pScreen->DestroyPixmap) (pPixmap); |         dixDestroyPixmap(pPixmap, 0); | ||||||
|     } |     } | ||||||
|     ret = (*pScreen->DestroyWindow) (pWin); |     ret = (*pScreen->DestroyWindow) (pWin); | ||||||
|     cs->DestroyWindow = pScreen->DestroyWindow; |     cs->DestroyWindow = pScreen->DestroyWindow; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue