From efdb3ec72fad42506dac0f479bc017f2dfb9aa1a Mon Sep 17 00:00:00 2001 From: reuk Date: Mon, 22 Nov 2021 13:20:21 +0000 Subject: [PATCH] OpenGL: Make version number parsing slightly more robust This fixes an issue on iOS platforms where the version number string is prefixed with "OpenGL ES " despite the Khronos docs for OpenGL ES specifying that "The GL_VERSION and GL_SHADING_LANGUAGE_VERSION strings begin with a version number". --- modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp b/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp index 3ead2ef621..54ea447f8a 100644 --- a/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp +++ b/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp @@ -97,15 +97,18 @@ static Version getOpenGLVersion() const std::string versionString (versionBegin, versionEnd); const auto spaceSeparated = StringArray::fromTokens (versionString.c_str(), false); - if (spaceSeparated.isEmpty()) - return {}; + for (const auto& token : spaceSeparated) + { + const auto pointSeparated = StringArray::fromTokens (token, ".", ""); - const auto pointSeparated = StringArray::fromTokens (spaceSeparated[0], ".", ""); + const auto major = pointSeparated[0].getIntValue(); + const auto minor = pointSeparated[1].getIntValue(); - const auto major = pointSeparated[0].getIntValue(); - const auto minor = pointSeparated[1].getIntValue(); + if (major != 0) + return { major, minor }; + } - return { major, minor }; + return {}; } void OpenGLHelpers::resetErrorState()