From 6c28efb58b5b9a80e445258102e4c1641d65b618 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 22 Dec 2015 20:58:15 +0100 Subject: QGLShaderProgram: hoist some constant expressions out of a loop d->programGuard and its ID don't change when calling a GL function, so check them only once, before entering the loop, instead of once per iteration. Cache d->programGuard->id(). Change-Id: I398da7a76823b2eb854b7b9d5af512adf9969fc9 Reviewed-by: Laszlo Agocs --- src/opengl/qglshaderprogram.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/opengl') diff --git a/src/opengl/qglshaderprogram.cpp b/src/opengl/qglshaderprogram.cpp index 0617c36236..790007144c 100644 --- a/src/opengl/qglshaderprogram.cpp +++ b/src/opengl/qglshaderprogram.cpp @@ -874,11 +874,12 @@ void QGLShaderProgram::removeAllShaders() { Q_D(QGLShaderProgram); d->removingShaders = true; - foreach (QGLShader *shader, d->shaders) { - if (d->programGuard && d->programGuard->id() - && shader && shader->d_func()->shaderGuard) - { - d->glfuncs->glDetachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); + if (d->programGuard) { + if (const auto programGuardId = d->programGuard->id()) { + foreach (QGLShader *shader, d->shaders) { + if (shader && shader->d_func()->shaderGuard) + d->glfuncs->glDetachShader(programGuardId, shader->d_func()->shaderGuard->id()); + } } } foreach (QGLShader *shader, d->anonShaders) { -- cgit v1.2.3