summaryrefslogtreecommitdiffstats
path: root/src/extras/defaults/qskyboxentity.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2017-11-16 14:33:11 +0100
committerSean Harmer <sean.harmer@kdab.com>2017-11-21 09:50:50 +0000
commitbd5a98b5a283dccf00c346596c02a5739d25b09a (patch)
treedf2cf5baee397e15ffc3865a1ff79ab3039c48c9 /src/extras/defaults/qskyboxentity.cpp
parent5e94e34c5b9567980929e677357467806aacaf1a (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.cpp30
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;
+ });
}
}