OpenGL: Add runtime check for OS X version and improve logic

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>
This commit is contained in:
Sean Harmer 2012-09-20 15:53:22 +01:00 committed by The Qt Project
parent 1dc517abc6
commit 945d17b6e9

View 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();