However, try commenting out the line in directx.c :
object->visInfo = glXChooseVisual(object->display,
DefaultScreen(object->display), dblBuf);


This seems to work ok on some (my!) drivers, but I know others have had problem with it.

Basically, for this to work reliably, you have three choices :

- do a full rewrite of the Wine windowing code to be able to somehow
'recreate' on the fly an X Window with new parameters (in this case, a
better visual). This would help me also in the OpenGL code :-)


Yep - I take it that its not possible to replace the visual of an existing window? I knowledge of X programming is very low, and I dont understand how visuals and contexts all fit together. I've also started looking at some render to texture support Raphael added, and that uses PBuffers which seem to also magic contexts out of thin air. I have no idea how things are supposed to fit together, but I'll get there.

- do as I did for the DesktopDoubleBuffered option, but more generic (by
adding stencil support to the already existing double buffering option).
Then people could add in their DLL overrides 'GTA.EXE => windows are
double buffered and stencilled'.


I dont like adding configuration options for things which should be transparent to the user. I'll have to look into this again in the future, but in the meantime I might put code to catch the X exception and cope with it. However, the window initialization, fullscreen and management code is the worst bit of the d3d8 code.

Incidentally, one thing that annoys me is full screen. Does the d3d < 7 code (or opengl code) do resolution switching, and do you have a pointer to how it occurs. At the moment 'fullscreen' is an undecorated window on the desktop, keeping the desktop window at the resolution it is already at.

Jason


Reply via email to