Fixed bug 1364 - Fullscreen OpenGL fails in OS 10.7 if deployment target is less than 10.7
amaranth72@gmail.com 2012-01-07 01:28:40 PST
Using the latest Hg tip of SDL 1.2, SDL_SetVideoMode will fail with the
SDL_OPENGL and SDL_FULLSCREEN flags set if the computer is running Lion and the
build deployment target version is lower than 10.7.
The issue seems to be at line 840 of SDL_QuartzVideo.m, where it checks if the
minimum required version is less than 10.7. If that condition is true, then it
uses the pre-Lion fullscreen method, even though the condition doesn't seem to
say anything about whether the computer is currently running Lion or not.
I tried doing this inside the #if conditional check (pseudocode): if (isLion) {
do new Lion stuff } else { do old stuff } , and that seemed to work fine. An
"invalid fullscreen drawable" warning was still around even though fullscreen
worked with the new addition, but I think that's because Lion wants SDL to add
a new Spaces thing when it goes fullscreen.
--- a/src/video/quartz/SDL_QuartzVideo.m Sat Jan 07 02:07:38 2012 -0500
+++ b/src/video/quartz/SDL_QuartzVideo.m Sat Jan 07 13:52:10 2012 -0500
@@ -837,8 +837,12 @@
/* Apparently Lion checks some version flag set by the linker
and changes API behavior. Annoying. */
-#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1070)
- {
+ if ( isLion ) {
+ [ qz_window setLevel:CGShieldingWindowLevel() ];
+ [ gl_context setView: window_view ];
+ [ gl_context setFullScreen ];
+ [ gl_context update ];
+ } else {
CGLError err;
CGLContextObj ctx;
@@ -850,13 +854,7 @@
SDL_SetError ("Error setting OpenGL fullscreen: %s", CGLErrorString(err));
goto ERR_NO_GL;
}
- }
-#else
- [ qz_window setLevel:CGShieldingWindowLevel() ];
- [ gl_context setView: window_view ];
- [ gl_context setFullScreen ];
- [ gl_context update ];
-#endif
+ }
[ window_view release ];
[ gl_context makeCurrentContext];