Suggesting an OpenGL Stereo fix

Hi!

Some weeks ago, Sam asked for feedback on the OpenGL stereo support.
I am working with Linux, and it works, but there’s a problem:
Virtually every program (including mine) needs to switch between stereo
and normal display.
This is currently not possible, because the flags set by
SDL_GL_SetAttribute are only read the first time SDL_SetVideoMode is
called. Subsequent calls to SDL_SetVideoMode simply resize the window.
I am aware that a workaround would be to quit the video system and restart,
but that’s a pain.

That’s why I suggest a simple additional flag for SDL_SetVideoMode:
SDL_RECREATE.
If this one is set, the window is always recreated instead of resized,
and the SDL_GL_Attributes are automatically considered.

Two little changes are required:

In SDL_video.h:

/* Available for SDL_SetVideoMode() /
#define SDL_ANYFORMAT 0x10000000 /
Allow any video depth/pixel-format /
#define SDL_HWPALETTE 0x20000000 /
Surface has exclusive palette */

becomes

/* Available for SDL_SetVideoMode() /
#define SDL_RECREATE 0x8000000 /
Recreate window, do not just resize (GL Stereo) /
#define SDL_ANYFORMAT 0x10000000 /
Allow any video depth/pixel-format /
#define SDL_HWPALETTE 0x20000000 /
Surface has exclusive palette */

In SDL_x11video.c:

/* Set up the X11 window */
saved_flags = current->flags;
if (SDL_Window && (saved_flags&SDL_OPENGL) == (flags&SDL_OPENGL)
&& bpp == current->format->BitsPerPixel ) {

becomes

/* Set up the X11 window */
saved_flags = current->flags;
if (SDL_Window && (saved_flags&SDL_OPENGL) == (flags&SDL_OPENGL)
&& bpp == current->format->BitsPerPixel && !(flags&SDL_RECREATE) ) {

Note that the same change must be made for the other operating systems!
Is that OK or did I miss any obvious and easy solutions?

CU,
Elmar

            Ww
          c(@@)c

================()==OUu============
=WHAT IF YASARA knows the answer?!=
=----- http://www.yasara.com -----=
=— http://www.cmbi.nl/whatif —=
============OOo====================
() ()
/ /