diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-10-22 12:36:18 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-10-26 10:26:02 +0000 |
commit | f9fae251ca07401ee1b0039edc6ea6b7a522b5a7 (patch) | |
tree | 2dff3c7006f5a00ab6791a0e932109807a217ab4 /src/quick/scenegraph/qsgcontext.cpp | |
parent | 901b88c6ae6c476a8ad9825d9020325a9a58ab61 (diff) |
Quick: Sanitize reading environment variables.
Where possible, use qEnvironmentVariableIsSet()/
qEnvironmentVariableIsEmpty() instead of checking on the
return value of qgetenv().
Where the value is required, add a check using one of
qEnvironmentVariableIsSet()/Empty().
Move QSGAtlasTexture::qsg_envInt() to qsgrenderer.cpp
for reuse as qt_sg_envInt() and add qt_sg_envFloat().
Change-Id: I4c93f16c228d4f537154f389a0fa1427654485f7
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src/quick/scenegraph/qsgcontext.cpp')
-rw-r--r-- | src/quick/scenegraph/qsgcontext.cpp | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/quick/scenegraph/qsgcontext.cpp b/src/quick/scenegraph/qsgcontext.cpp index 150f8475d8..dd6977e42e 100644 --- a/src/quick/scenegraph/qsgcontext.cpp +++ b/src/quick/scenegraph/qsgcontext.cpp @@ -134,8 +134,8 @@ static bool qsg_useConsistentTiming() { static int use = -1; if (use < 0) { - QByteArray fixed = qgetenv("QSG_FIXED_ANIMATION_STEP"); - use = !(fixed.isEmpty() || fixed == "no"); + use = !qEnvironmentVariableIsEmpty("QSG_FIXED_ANIMATION_STEP") && qgetenv("QSG_FIXED_ANIMATION_STEP") != "no" + ? 1 : 0; qCDebug(QSG_LOG_INFO, "Using %s", bool(use) ? "fixed animation steps" : "sg animation driver"); } return bool(use); @@ -297,15 +297,16 @@ QSGContext::QSGContext(QObject *parent) : QObject(*(new QSGContextPrivate), parent) { Q_D(QSGContext); - QByteArray mode = qgetenv("QSG_DISTANCEFIELD_ANTIALIASING"); - if (!mode.isEmpty()) + if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QSG_DISTANCEFIELD_ANTIALIASING"))) { + const QByteArray mode = qgetenv("QSG_DISTANCEFIELD_ANTIALIASING"); d->distanceFieldAntialiasingDecided = true; - if (mode == "subpixel") - d->distanceFieldAntialiasing = QSGGlyphNode::HighQualitySubPixelAntialiasing; - else if (mode == "subpixel-lowq") - d->distanceFieldAntialiasing = QSGGlyphNode::LowQualitySubPixelAntialiasing; - else if (mode == "gray") - d->distanceFieldAntialiasing = QSGGlyphNode::GrayAntialiasing; + if (mode == "subpixel") + d->distanceFieldAntialiasing = QSGGlyphNode::HighQualitySubPixelAntialiasing; + else if (mode == "subpixel-lowq") + d->distanceFieldAntialiasing = QSGGlyphNode::LowQualitySubPixelAntialiasing; + else if (mode == "gray") + d->distanceFieldAntialiasing = QSGGlyphNode::GrayAntialiasing; + } // Adds compatibility with Qt 5.3 and earlier's QSG_RENDER_TIMING if (qEnvironmentVariableIsSet("QSG_RENDER_TIMING")) { @@ -333,12 +334,14 @@ void QSGContext::renderContextInitialized(QSGRenderContext *renderContext) d->mutex.lock(); if (d->antialiasingMethod == UndecidedAntialiasing) { - QByteArray aaType = qgetenv("QSG_ANTIALIASING_METHOD"); - if (aaType == "msaa") { - d->antialiasingMethod = MsaaAntialiasing; - } else if (aaType == "vertex") { - d->antialiasingMethod = VertexAntialiasing; - } else { + if (Q_UNLIKELY(qEnvironmentVariableIsSet("QSG_ANTIALIASING_METHOD"))) { + const QByteArray aaType = qgetenv("QSG_ANTIALIASING_METHOD"); + if (aaType == "msaa") + d->antialiasingMethod = MsaaAntialiasing; + else if (aaType == "vertex") + d->antialiasingMethod = VertexAntialiasing; + } + if (d->antialiasingMethod == UndecidedAntialiasing) { if (renderContext->openglContext()->format().samples() > 0) d->antialiasingMethod = MsaaAntialiasing; else |