GTA3 crash :( -- RedHat 9

Jason Edmeades us at the-edmeades.demon.co.uk
Thu Aug 14 16:02:55 CDT 2003


>>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




More information about the wine-devel mailing list