Hi.  We've had some problems with XMesaGarbageCollect with multiple threads.  
For various reasons, we've had different Display pointers on different threads. 
 We have a problem when XSync is called on a Display in the list of Mesa 
buffers, on a thread where we weren't intending to handle that Display.  That's 
because XMesaGarbageCollect goes through every buffer and for each window with 
a valid Display*, does an XSync and then tests whether the window exists.  
Various of these could cause some excitement for us, but we'd love to not XSync 
things on whatever thread.

One proposal we have is to have XMesaGarbageCollect accept a Display* argument. 
 The places where it is called all have a Display*, so it could just be passed 
in.  The condition just before the XSync could see whether the buffer's 
Display* is the same as the one passed in.  This, in our case, would prevent 
XSync on a Display* that we'd like to handle on a different thread.

There is a possibility of leaking a buffer, however, if we didn't ever call a 
function that calls XMesaGarbageCollect, like fake_glXDestroyContext() or 
fake_glXCreateNewContext(), for a particular Display*.  But anytime you call 
one of those for a Display, any abandoned buffers on that display would be 
cleaned up.

This isn't a thread-based approach, but would help our particular situation.

I know there were people concerned with XMesaGarbageCollect last fall, from 
looking at archives.  There were threading issues, concerns about pixmaps, etc. 
  I saw someone proposed a patch, but it wasn't in the archive.  Anything 
happening with this?

Would our proposal, having XMesaGarbageCollect accept a Display* and only 
calling XSync and testing buffers associated with that Display*, cause someone 
else problems?  Would it go far enough to help anyone else?

I could submit my patch, but I want someone familiar with this code to comment.

thanks
andy

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to