diff options
Diffstat (limited to 'src/opengl')
-rw-r--r-- | src/opengl/gl2paintengineex/qglengineshadermanager.cpp | 15 | ||||
-rw-r--r-- | src/opengl/qgl.cpp | 2 |
2 files changed, 10 insertions, 7 deletions
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp index b239356c4a..fff64506ab 100644 --- a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp +++ b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp @@ -48,6 +48,8 @@ #include <QMetaEnum> #endif +#include <algorithm> + // #define QT_GL_SHARED_SHADER_DEBUG QT_BEGIN_NAMESPACE @@ -472,15 +474,16 @@ QGLEngineShaderProg *QGLEngineSharedShaders::findProgramInCache(const QGLEngineS void QGLEngineSharedShaders::cleanupCustomStage(QGLCustomShaderStage* stage) { - // Remove any shader programs which has this as the custom shader src: - for (int i = 0; i < cachedPrograms.size(); ++i) { - QGLEngineShaderProg *cachedProg = cachedPrograms[i]; + auto hasStageAsCustomShaderSouce = [stage](QGLEngineShaderProg *cachedProg) -> bool { if (cachedProg->customStageSource == stage->source()) { delete cachedProg; - cachedPrograms.removeAt(i); - i--; + return true; } - } + return false; + }; + cachedPrograms.erase(std::remove_if(cachedPrograms.begin(), cachedPrograms.end(), + hasStageAsCustomShaderSouce), + cachedPrograms.end()); } diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index a8409346ba..5c8c1d58eb 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -1264,7 +1264,7 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co QGLFormat::OpenGLVersionFlags versionFlags = QGLFormat::OpenGL_Version_None; if (versionString.startsWith(QLatin1String("OpenGL ES"))) { - QStringList parts = versionString.split(QLatin1Char(' ')); + const auto parts = versionString.splitRef(QLatin1Char(' ')); if (parts.size() >= 3) { if (parts[2].startsWith(QLatin1String("1."))) { if (parts[1].endsWith(QLatin1String("-CM"))) { |