(!1714) xfree86: xv: use window destructor hook
Wrapping ScreenRec's function pointers is problematic for many reasons, so use the new window destructor hook instead. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
		
							parent
							
								
									d347c75983
								
							
						
					
					
						commit
						c2652c3111
					
				| 
						 | 
				
			
			@ -81,9 +81,10 @@ static int xf86XVPutImage(DrawablePtr, XvPortPtr, GCPtr,
 | 
			
		|||
static int xf86XVQueryImageAttributes(XvPortPtr, XvImagePtr,
 | 
			
		||||
                                      CARD16 *, CARD16 *, int *, int *);
 | 
			
		||||
 | 
			
		||||
static void xf86XVWindowDestroy(ScreenPtr pScreen, WindowPtr pWin, void *arg);
 | 
			
		||||
 | 
			
		||||
/* ScreenRec fields */
 | 
			
		||||
 | 
			
		||||
static Bool xf86XVDestroyWindow(WindowPtr pWin);
 | 
			
		||||
static void xf86XVWindowExposures(WindowPtr pWin, RegionPtr r1);
 | 
			
		||||
static void xf86XVPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin,
 | 
			
		||||
                                   VTKind kind);
 | 
			
		||||
| 
						 | 
				
			
			@ -253,7 +254,6 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num)
 | 
			
		|||
 | 
			
		||||
    pScrn = xf86ScreenToScrn(pScreen);
 | 
			
		||||
 | 
			
		||||
    ScreenPriv->DestroyWindow = pScreen->DestroyWindow;
 | 
			
		||||
    ScreenPriv->WindowExposures = pScreen->WindowExposures;
 | 
			
		||||
    ScreenPriv->PostValidateTree = PostValidateTreeUndefined;
 | 
			
		||||
    ScreenPriv->ClipNotify = pScreen->ClipNotify;
 | 
			
		||||
| 
						 | 
				
			
			@ -263,7 +263,6 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num)
 | 
			
		|||
    ScreenPriv->AdjustFrame = pScrn->AdjustFrame;
 | 
			
		||||
    ScreenPriv->ModeSet = pScrn->ModeSet;
 | 
			
		||||
 | 
			
		||||
    pScreen->DestroyWindow = xf86XVDestroyWindow;
 | 
			
		||||
    pScreen->WindowExposures = xf86XVWindowExposures;
 | 
			
		||||
    pScreen->ClipNotify = xf86XVClipNotify;
 | 
			
		||||
    pScreen->CloseScreen = xf86XVCloseScreen;
 | 
			
		||||
| 
						 | 
				
			
			@ -991,13 +990,10 @@ xf86XVReputOrStopAllPorts(ScrnInfoPtr pScrn, Bool onlyChanged)
 | 
			
		|||
 | 
			
		||||
/****  ScreenRec fields ****/
 | 
			
		||||
 | 
			
		||||
static Bool
 | 
			
		||||
xf86XVDestroyWindow(WindowPtr pWin)
 | 
			
		||||
static void
 | 
			
		||||
xf86XVWindowDestroy(ScreenPtr pScreen, WindowPtr pWin, void *arg)
 | 
			
		||||
{
 | 
			
		||||
    ScreenPtr pScreen = pWin->drawable.pScreen;
 | 
			
		||||
    XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
 | 
			
		||||
    XF86XVWindowPtr tmp, WinPriv = GET_XF86XV_WINDOW(pWin);
 | 
			
		||||
    int ret;
 | 
			
		||||
 | 
			
		||||
    while (WinPriv) {
 | 
			
		||||
        XvPortRecPrivatePtr pPriv = WinPriv->PortRec;
 | 
			
		||||
| 
						 | 
				
			
			@ -1015,12 +1011,6 @@ xf86XVDestroyWindow(WindowPtr pWin)
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    dixSetPrivate(&pWin->devPrivates, XF86XVWindowKey, NULL);
 | 
			
		||||
 | 
			
		||||
    pScreen->DestroyWindow = ScreenPriv->DestroyWindow;
 | 
			
		||||
    ret = (*pScreen->DestroyWindow) (pWin);
 | 
			
		||||
    pScreen->DestroyWindow = xf86XVDestroyWindow;
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
| 
						 | 
				
			
			@ -1148,7 +1138,8 @@ xf86XVCloseScreen(ScreenPtr pScreen)
 | 
			
		|||
    if (!ScreenPriv)
 | 
			
		||||
        return TRUE;
 | 
			
		||||
 | 
			
		||||
    pScreen->DestroyWindow = ScreenPriv->DestroyWindow;
 | 
			
		||||
    dixScreenHookWindowDestroy(pScreen, xf86XVWindowDestroy, NULL);
 | 
			
		||||
 | 
			
		||||
    pScreen->WindowExposures = ScreenPriv->WindowExposures;
 | 
			
		||||
    pScreen->ClipNotify = ScreenPriv->ClipNotify;
 | 
			
		||||
    pScreen->CloseScreen = ScreenPriv->CloseScreen;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,3 @@
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2003 by The XFree86 Project, Inc.
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +36,6 @@
 | 
			
		|||
extern _X_EXPORT DevPrivateKey XF86XvScreenKey;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    DestroyWindowProcPtr DestroyWindow;
 | 
			
		||||
    ClipNotifyProcPtr ClipNotify;
 | 
			
		||||
    WindowExposuresProcPtr WindowExposures;
 | 
			
		||||
    PostValidateTreeProcPtr PostValidateTree;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue