Oops, make "vsync 0" work again
[neverball] / share / video.c
index a0a0026..36e626a 100644 (file)
@@ -17,6 +17,7 @@
 #include "glext.h"
 #include "config.h"
 #include "syswm.h"
+#include "sync.h"
 
 /*---------------------------------------------------------------------------*/
 
@@ -121,14 +122,6 @@ int video_mode(int f, int w, int h)
         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
         glDepthFunc(GL_LEQUAL);
 
-        /*
-         * Mac OS X might still need this, because apparently SDL doesn't do
-         * SDL_GL_SWAP_CONTROL on OS X.  TODO: investigate.
-         */
-#if 0
-        if (vsync) sync_init();
-#endif
-
         /* If GL supports multisample, and SDL got a multisample buffer... */
 
 #ifdef GL_ARB_multisample
@@ -142,6 +135,11 @@ int video_mode(int f, int w, int h)
 
         glReadBuffer(GL_FRONT);
 
+        /* Attempt manual swap control if SDL's is broken. */
+
+        if (vsync && SDL_GL_GetAttribute(SDL_GL_SWAP_CONTROL, &vsync) == -1)
+            sync_init();
+
         return 1;
     }