2010/4/14 Michel Dänzer <[email protected]>: > On Wed, 2010-04-14 at 10:43 -0400, Kristian Høgsberg wrote: >> 2010/4/10 Michel Dänzer <[email protected]>: >> > On Fri, 2010-04-09 at 14:18 -0400, Kristian Høgsberg wrote: >> >> Now that glx doesn't call DRI2DestroyDrawable anymore, we don't need to >> >> force a specific resource destruction order in the DestroyWindow hook. >> > >> > I don't think DRI2DestroyDrawable was the only reason for this, see e.g. >> > commit 2075d4bf9e53b8baef0b919da6c44771220cd4a5 ('glx: If a destroyed >> > window is bound to the current context, make it not current.') and the >> > bug report referenced by it. >> >> There's no bug report reference in that commit [...] > > Look again. :)
Argh, don't know how I missed that. Sorry about that, I guess I was looking for a bugzilla link on a line of its own, along with the Signed-off-by line. > It references > https://bugs.freedesktop.org/show_bug.cgi?id=21132#c15 , according to > which the commit fixes the crash shown in > https://bugs.freedesktop.org/attachment.cgi?id=25038 , which doesn't > have anything to do with DRI2 but with stale DrawablePtrs due to the > window being destroyed while it's still bound to a GLX context. The crash in the attachment happens in the ClientStateCallback from CloseDownClient, at which point resources have already been cleaned up. So forcing a specific destroy order can't make a difference here. The real fix is the patch from attachment 25038, not the DestroyWindow hook. If the context is destroyed first, it will remove itself from the glxAllContexts list so the DrawableGone destructor won't touch it. On the other hand, if the drawable is destroyed first, thanks to your patch, it will detach itself from the context properly so context destruction (whether at resource cleanup time or at client shutdown time) wont touch a free drawable. Kristian _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
