Hi,
I had a little amount of time to look at the issue and have posted a fix to the list. It appeared that the GLX context did still exist when X11DRV_InitOpenGLInfo got called the second time from a different thread. This most likely turned wined3d in a multithreaded OpenGL app which doesn't allways work well as OpenGL isn't threadsafe. By switching to a NULL context before killing the context, it got killed immedeately (before it became inactive which it never became). This fixes atleast 3dmark2001 and halflife2.
Roderick
Phil, Roderick,
I'm going to look at what I can do to improve the patch and gather more information on the handling of contextes. I just haven't had time yet. And Roderick, I'll discuss with you the newer patch when I'm ready so to see if you agree with it. I do lean towards agreeing with Phil on that this is simply needed and more than a workaround. I've already been asked many times if the patch has gotten in and that is why I posted to wine-patches so quickly; your patch broke alot of D3D apps for alot of people... The d3d9 stateblock test is the best clue.
Jesse