Tim Rowley wrote:
> 
> Jens Owen wrote:
> > It would be interesting to hear more details from their developers
> > regarding the comment they put in their README:  "If an OpenGL
> > application is forcibly terminated by closing the X connection then
> > there may be leftovers on the desktop.  This appears to be a problem in
> > the DRI infrastructure the driver is based upon."
> 
> The problem we were seeing is that closing the connection didn't update
> the context stamp, so the dri driver could still get the lock without
> talking to the server.  This meant frames were still in flight when
> xlib finally realized the connection was closed and exited.  We saw
> the same behavior with a Radeon card.  The easiest way to reproduce
> this is to start gears and then kill the connection (wm or xkill).
> 
> > Are there any Kyro developers listening on this list?
> 
> Yes.
> 
> - Tim Rowley
>    [EMAIL PROTECTED]

Good to hear from you Tim.

I couldn't reproduce this with the Radeon TCL driver I have installed
(page flipping enabled) running on a KDE desktop.

Could you try this patch on your system?  It bumps the clipstamp at
cleanup.

--                             /\
         Jens Owen            /  \/\ _    
  [EMAIL PROTECTED]  /    \ \ \   Steamboat Springs, Colorado
Index: xc/programs/Xserver/GL/dri/dri.c
===================================================================
RCS file: /cvsroot/dri/xc/xc/programs/Xserver/GL/dri/dri.c,v
retrieving revision 1.37.2.1
diff -u -r1.37.2.1 dri.c
--- xc/programs/Xserver/GL/dri/dri.c    21 May 2002 17:31:34 -0000      1.37.2.1
+++ xc/programs/Xserver/GL/dri/dri.c    28 May 2002 03:34:22 -0000
@@ -987,6 +987,10 @@
        pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
 
        if (pDRIDrawablePriv->drawableIndex != -1) {
+           /* bump stamp to force outstanding 3D requests to resync */
+           pDRIPriv->pSAREA->drawableTable[pDRIDrawablePriv->drawableIndex].stamp
+               = DRIDrawableValidationStamp++;
+
            /* release drawable table entry */
            pDRIPriv->DRIDrawables[pDRIDrawablePriv->drawableIndex] = NULL;
        }

Reply via email to