OpenGL: Add runtime check for OS X version and improve logic
authorSean Harmer <sean.harmer@kdab.com>
Thu, 20 Sep 2012 14:53:22 +0000 (15:53 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 21 Sep 2012 19:44:43 +0000 (21:44 +0200)
Apple recommend adding NSOpenGLProfileVersion3_2Core when asking for
a 3.2 Core profile context and NSOpenGLProfileVersionLegacy in all other
cases.

Also added a missing runtime check for OS X 10.7 or newer. Fixes a
potential crash if Qt was built on 10.7/8 but executed on 10.6.

Change-Id: I4c09d2dbbe8df25a3553cc01b468dabab0f8eaa4
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
src/platformsupport/cglconvenience/cglconvenience.mm

index 7ca9b60..3367373 100644 (file)
@@ -89,17 +89,22 @@ void *qcgl_createNSOpenGLPixelFormat(const QSurfaceFormat &format)
 
     attrs.append(NSOpenGLPFADoubleBuffer);
 
-    if (format.profile() == QSurfaceFormat::CoreProfile) {
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
-        if ((format.majorVersion() == 3 && format.minorVersion() >= 2)
-          || format.majorVersion() > 3 ) {
+    if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) {
+        if (format.profile() == QSurfaceFormat::CoreProfile
+                && ((format.majorVersion() == 3 && format.minorVersion() >= 2)
+                    || format.majorVersion() > 3)) {
             attrs << NSOpenGLPFAOpenGLProfile;
             attrs << NSOpenGLProfileVersion3_2Core;
+        } else {
+            attrs << NSOpenGLPFAOpenGLProfile;
+            attrs << NSOpenGLProfileVersionLegacy;
         }
+    }
 #else
+    if (format.profile() == QSurfaceFormat::CoreProfile)
         qWarning("Mac OSX >= 10.7 is needed for OpenGL Core Profile support");
 #endif
-    }
 
     if (format.depthBufferSize() > 0)
         attrs <<  NSOpenGLPFADepthSize << format.depthBufferSize();