Fix GL_VERSION parsing when using WGL

Unlike other platforms and the EGL path, this one tries to parse
GL_VERSION on its own. Unfortunately it breaks for certain version
strings: we cannot assume more than major.minor in the beginning
and so looking for a second dot is wrong.

For example, "2.1 Mesa 7.11-devel" is parsed as major "2", minor
"1 Mesa 7" (result in 0), leading to a version of 2.0 instead of 2.1.

To overcome this, use the common helper function in
QPlatformOpenGLContext.

Change-Id: I460f4276a3a06659b542e0c076ddc1ada3122907
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
This commit is contained in:
Laszlo Agocs 2015-10-20 12:54:48 +02:00
parent f35797991e
commit 101a6bda45

View File

@ -856,16 +856,11 @@ QWindowsOpenGLContextFormat QWindowsOpenGLContextFormat::current()
{
QWindowsOpenGLContextFormat result;
const QByteArray version = QOpenGLStaticContext::getGlString(GL_VERSION);
const int majorDot = version.indexOf('.');
if (majorDot != -1) {
int minorDot = version.indexOf('.', majorDot + 1);
if (minorDot == -1)
minorDot = version.size();
result.version = (version.mid(0, majorDot).toInt() << 8)
+ version.mid(majorDot + 1, minorDot - majorDot - 1).toInt();
} else {
int major, minor;
if (QPlatformOpenGLContext::parseOpenGLVersion(version, major, minor))
result.version = (major << 8) + minor;
else
result.version = 0x0200;
}
result.profile = QSurfaceFormat::NoProfile;
if (result.version < 0x0300) {
result.options |= QSurfaceFormat::DeprecatedFunctions;