[PATCH 07/10] xfree86/xv: Change the behaviour of AdjustFrame to reput everything

ville.syrjala at nokia.com ville.syrjala at nokia.com
Fri Oct 29 11:19:03 PDT 2010


From: Ville Syrjälä <ville.syrjala at nokia.com>

Also reput PutVideo/GetVideo ports in AdjustFrame. This makes the
overlay track the screen panning instead of staying stationary in the
wrong place.

Signed-off-by: Ville Syrjälä <ville.syrjala at nokia.com>
---
 hw/xfree86/common/xf86xv.c |   32 +++++++++++++++++---------------
 1 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/hw/xfree86/common/xf86xv.c b/hw/xfree86/common/xf86xv.c
index 59232a8..f70a2ef 100644
--- a/hw/xfree86/common/xf86xv.c
+++ b/hw/xfree86/common/xf86xv.c
@@ -1286,24 +1286,26 @@ xf86XVAdjustFrame(int index, int x, int y, int flags)
       XvPortRecPrivatePtr pPriv;
 
       for(i = pa->nPorts; i > 0; i--, pPort++) {
+	Bool visible;
+
 	pPriv = (XvPortRecPrivatePtr)pPort->devPriv.ptr;
 
-	if(!pPriv->type && (pPriv->isOn != XV_OFF)) { /* overlaid still/image */
-	  pWin = (WindowPtr)pPriv->pDraw;
+	pWin = (WindowPtr)pPriv->pDraw;
 
-	  if ((pPriv->AdaptorRec->ReputImage) &&
-	     ((pWin->visibility == VisibilityUnobscured) ||
-	      (pWin->visibility == VisibilityPartiallyObscured)))
-	  {
-	      xf86XVReputImage(pPriv);
-	  } else if (pPriv->isOn == XV_ON) {
-	     (*pPriv->AdaptorRec->StopVideo)(
-				 pPriv->pScrn, pPriv->DevPriv.ptr, FALSE);
-	     xf86XVRemovePortFromWindow(pWin, pPriv);
-	     pPriv->isOn = XV_PENDING;
-	     continue;
-	  }
-	}
+	if (pPriv->isOn == XV_OFF || !pWin)
+	    continue;
+
+	visible = pWin->visibility == VisibilityUnobscured ||
+		  pWin->visibility == VisibilityPartiallyObscured;
+
+	/*
+	 * Stop and remove still/images if
+	 * ReputImage isn't supported.
+	 */
+	if (!pPriv->type && !pPriv->AdaptorRec->ReputImage)
+	    visible = FALSE;
+
+	xf86XVReputOrStopPort(pPriv, pWin, visible);
      }
   }
 }
-- 
1.7.2.2



More information about the xorg-devel mailing list