diff src/video/x11/SDL_x11opengl.c @ 2327:7b53a8401195

In testdyngl.c the event type was being anded (&) with SDL_KEYDOWN and if the result was none zero the program was quiting. This is very weird because it was working earlier this week. I added some more trace code to SDL_x11events.c In SDL_X11opengl.c I modified SDL_GL_GetSwapInterval() so that it returns a pretty good value even if you have the SGI swap extension instead of the MESA swap extension. I just saved the value you set and return it too you.
author Bob Pendleton <bob@pendleton.com>
date Fri, 07 Mar 2008 23:57:15 +0000
parents 3202e4826c57
children e1da92da346c 911db724ea24
line wrap: on
line diff
--- a/src/video/x11/SDL_x11opengl.c	Fri Mar 07 21:01:54 2008 +0000
+++ b/src/video/x11/SDL_x11opengl.c	Fri Mar 07 23:57:15 2008 +0000
@@ -472,6 +472,16 @@
     return (status);
 }
 
+/* 
+   0 is a valid argument to glxSwapIntervalMESA and setting it to 0
+   with the MESA version of the extension will undo the effect of a
+   previous call with a value that is greater than zero (or at least
+   that is what the FM says. OTOH, 0 is an invalid argument to
+   glxSwapIntervalSGI and it returns an error if you call it with 0 as
+   an argument.
+*/
+
+static int swapinterval = -1;
 int
 X11_GL_SetSwapInterval(_THIS, int interval)
 {
@@ -482,12 +492,16 @@
         if (status != 0) {
             SDL_SetError("glxSwapIntervalMESA failed");
             status = -1;
+        } else {
+            swapinterval = interval;
         }
     } else if (_this->gl_data->glXSwapIntervalSGI) {
         status = _this->gl_data->glXSwapIntervalSGI(interval);
         if (status != 0) {
             SDL_SetError("glxSwapIntervalSGI failed");
             status = -1;
+        } else {
+            swapinterval = interval;
         }
     } else {
         SDL_Unsupported();
@@ -502,8 +516,7 @@
     if (_this->gl_data->glXGetSwapIntervalMESA) {
         return _this->gl_data->glXGetSwapIntervalMESA();
     } else {
-        SDL_Unsupported();
-        return -1;
+        return swapinterval;
     }
 }