XV race condition with xf86XVReputImage, Expose events and Unichrome driver

Michel Dänzer michel at tungstengraphics.com
Thu May 24 00:43:28 PDT 2007


On Wed, 2007-05-23 at 16:46 -0400, Jon Nettleton wrote:
> After some testing on this I have tracked down the issue to the commit
> of this patch.
> 
> http://gitweb.freedesktop.org/?p=xorg/xserver.git;a=commitdiff;h=dc914ced69e1e619a944c7dcb940c25e195cd4f3
> 
> Specifically these changes
> 
> @@ -1739,9 +1746,13 @@ xf86XVPutImage(
>       REGION_UNINIT(pScreen, &VPReg)
>    }
> 
> -  if(portPriv->pDraw) {
> +  /* If we are changing windows, unregister our port in the old window */
> +  if(portPriv->pDraw && (portPriv->pDraw != pDraw))
>       xf86XVRemovePortFromWindow((WindowPtr)(portPriv->pDraw), portPriv);
> -  }
> +
> +  /* Register our port with the new window */
> +  ret =  xf86XVEnlistPortInWindow((WindowPtr)pDraw, portPriv);
> +  if(ret != Success) goto PUT_IMAGE_BAILOUT;
> 
>    if(!REGION_NOTEMPTY(pScreen, &ClipRegion)) {
>       clippedAway = TRUE;
> @@ -1772,7 +1783,6 @@ xf86XVPutImage(
>    if((ret == Success) &&
>          (portPriv->AdaptorRec->flags & VIDEO_OVERLAID_IMAGES)) {
> 
> -     xf86XVEnlistPortInWindow((WindowPtr)pDraw, portPriv);
>       portPriv->isOn = XV_ON;
>       portPriv->pDraw = pDraw;
>       portPriv->drw_x = drw_x;  portPriv->drw_y = drw_y;
> 
> 
> I haven't had any time to fully debug where the failure is, but
> backing this patch out fixes the problem.

Does this patch fix it?


-- 
Earthling Michel Dänzer           |          http://tungstengraphics.com
Libre software enthusiast         |          Debian, X and DRI developer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xf86xv.c.diff
Type: text/x-patch
Size: 1615 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg/attachments/20070524/bbb56bd8/attachment.bin>


More information about the xorg mailing list