diff -Naur /home/patrice/src/cvs/Libsdl/SDL12/include/SDL_video.h SDL-cvs/include/SDL_video.h --- /home/patrice/src/cvs/Libsdl/SDL12/include/SDL_video.h 2006-02-06 18:40:38.000000000 +0100 +++ SDL-cvs/include/SDL_video.h 2006-02-06 18:53:49.691956336 +0100 @@ -127,6 +127,7 @@ #define SDL_OPENGLBLIT 0x0000000A /* Create an OpenGL rendering context and use it for blitting */ #define SDL_RESIZABLE 0x00000010 /* This video mode may be resized */ #define SDL_NOFRAME 0x00000020 /* No window caption or edge frame */ +#define SDL_OPENGLKEPT 0x00000040 /* OpenGL context has been kept */ /* Used internally (read-only) */ #define SDL_HWACCEL 0x00000100 /* Blit uses hardware acceleration */ #define SDL_SRCCOLORKEY 0x00001000 /* Blit uses a source color key */ diff -Naur /home/patrice/src/cvs/Libsdl/SDL12/src/video/SDL_video.c SDL-cvs/src/video/SDL_video.c --- /home/patrice/src/cvs/Libsdl/SDL12/src/video/SDL_video.c 2006-02-06 18:40:40.000000000 +0100 +++ SDL-cvs/src/video/SDL_video.c 2006-02-06 18:55:30.250669088 +0100 @@ -629,8 +629,8 @@ is_opengl = ( ( flags & SDL_OPENGL ) == SDL_OPENGL ); if ( is_opengl ) { - /* These flags are for 2D video modes only */ - flags &= ~(SDL_HWSURFACE|SDL_DOUBLEBUF); + /* These flags are for 2D video modes only, clear context kept flag */ + flags &= ~(SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_OPENGLKEPT); } /* Reset the keyboard here so event callbacks can run */ diff -Naur /home/patrice/src/cvs/Libsdl/SDL12/src/video/x11/SDL_x11video.c SDL-cvs/src/video/x11/SDL_x11video.c --- /home/patrice/src/cvs/Libsdl/SDL12/src/video/x11/SDL_x11video.c 2006-02-05 18:34:26.000000000 +0100 +++ SDL-cvs/src/video/x11/SDL_x11video.c 2006-02-06 19:10:53.544307120 +0100 @@ -1052,6 +1052,10 @@ current = NULL; goto done; } + /* Window already exist, so the context has been kept */ + if (flags & SDL_OPENGL) { + flags |= SDL_OPENGLKEPT; + } } else { if (X11_CreateWindow(this,current,width,height,bpp,flags) < 0) { current = NULL;