xfree86/xv: Change the behaviour of AdjustFrame to reput everything

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@nokia.com>
Reviewed-by: Luc Verhaegen <luc.verhaegen@basyskom.de>
This commit is contained in:
Ville Syrjälä 2010-10-29 17:14:34 +03:00
parent d794be8121
commit 3d4d0237a3
1 changed files with 17 additions and 15 deletions

View File

@ -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);
}
}
}