diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2017-11-16 14:33:11 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-11-21 09:50:50 +0000 |
commit | bd5a98b5a283dccf00c346596c02a5739d25b09a (patch) | |
tree | df2cf5baee397e15ffc3865a1ff79ab3039c48c9 /src/extras/defaults/qskyboxentity.cpp | |
parent | 5e94e34c5b9567980929e677357467806aacaf1a (diff) |
QSkyboxEntity: try to reload texture only once
By using a queued invocation and a flag. This prevent cases where the
basename would be set by a first call, with an extension not yet being set
which would result in warnings.
Change-Id: I385cffaf9ee262535c759109335bb3c150cc7525
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/extras/defaults/qskyboxentity.cpp')
-rw-r--r-- | src/extras/defaults/qskyboxentity.cpp | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/extras/defaults/qskyboxentity.cpp b/src/extras/defaults/qskyboxentity.cpp index 202ba4fcb..df6547083 100644 --- a/src/extras/defaults/qskyboxentity.cpp +++ b/src/extras/defaults/qskyboxentity.cpp @@ -40,6 +40,7 @@ #include "qskyboxentity.h" #include "qskyboxentity_p.h" +#include <QtCore/qtimer.h> #include <Qt3DRender/qfilterkey.h> #include <Qt3DRender/qeffect.h> #include <Qt3DRender/qtexture.h> @@ -86,6 +87,7 @@ QSkyboxEntityPrivate::QSkyboxEntityPrivate() , m_negYImage(new QTextureImage()) , m_negZImage(new QTextureImage()) , m_extension(QStringLiteral(".png")) + , m_hasPendingReloadTextureCall(false) { m_loadedTexture->setGenerateMipMaps(false); } @@ -191,17 +193,23 @@ void QSkyboxEntityPrivate::init() */ void QSkyboxEntityPrivate::reloadTexture() { - if (m_extension == QStringLiteral(".dds")) { - m_loadedTexture->setSource(QUrl(m_baseName + m_extension)); - m_textureParameter->setValue(QVariant::fromValue(m_loadedTexture)); - } else { - m_posXImage->setSource(QUrl(m_baseName + QStringLiteral("_posx") + m_extension)); - m_posYImage->setSource(QUrl(m_baseName + QStringLiteral("_posy") + m_extension)); - m_posZImage->setSource(QUrl(m_baseName + QStringLiteral("_posz") + m_extension)); - m_negXImage->setSource(QUrl(m_baseName + QStringLiteral("_negx") + m_extension)); - m_negYImage->setSource(QUrl(m_baseName + QStringLiteral("_negy") + m_extension)); - m_negZImage->setSource(QUrl(m_baseName + QStringLiteral("_negz") + m_extension)); - m_textureParameter->setValue(QVariant::fromValue(m_skyboxTexture)); + if (!m_hasPendingReloadTextureCall) { + m_hasPendingReloadTextureCall = true; + QTimer::singleShot(0, [this] { + if (m_extension == QStringLiteral(".dds")) { + m_loadedTexture->setSource(QUrl(m_baseName + m_extension)); + m_textureParameter->setValue(QVariant::fromValue(m_loadedTexture)); + } else { + m_posXImage->setSource(QUrl(m_baseName + QStringLiteral("_posx") + m_extension)); + m_posYImage->setSource(QUrl(m_baseName + QStringLiteral("_posy") + m_extension)); + m_posZImage->setSource(QUrl(m_baseName + QStringLiteral("_posz") + m_extension)); + m_negXImage->setSource(QUrl(m_baseName + QStringLiteral("_negx") + m_extension)); + m_negYImage->setSource(QUrl(m_baseName + QStringLiteral("_negy") + m_extension)); + m_negZImage->setSource(QUrl(m_baseName + QStringLiteral("_negz") + m_extension)); + m_textureParameter->setValue(QVariant::fromValue(m_skyboxTexture)); + } + m_hasPendingReloadTextureCall = false; + }); } } |