summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaj Grönholm <kaj.gronholm@qt.io>2018-11-28 11:52:16 +0200
committerKaj Grönholm <kaj.gronholm@qt.io>2018-11-30 10:32:24 +0000
commite4161db48c76fe646a338315c0c1a1f3588edbb4 (patch)
tree2101c024c0bcf04a90ec586572404bc286f09ffe
parent11ec833a0d21b60abbcfad0d1224fbe7ccad0682 (diff)
Fix stereoscopic mode changing with subpresentations
Q3DSSceneManager::buildScene() is called for both main presentation and sub presentation(s). To not disconnect stereoscopic mode switching with subpresentations, move it into better place. Task-number: QT3DS-2738 Change-Id: I5ecc9260c28ea1d42ba43aee2111f46a1ef9b607 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
-rw-r--r--src/runtime/q3dsengine.cpp3
-rw-r--r--src/runtime/q3dsscenemanager.cpp2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/runtime/q3dsengine.cpp b/src/runtime/q3dsengine.cpp
index c0dee6d..875e422 100644
--- a/src/runtime/q3dsengine.cpp
+++ b/src/runtime/q3dsengine.cpp
@@ -1149,6 +1149,9 @@ void Q3DSEngine::prepareForReload()
destroyBehaviorHandle(h);
m_behaviorHandles.clear();
+ // Disconnect previously loaded signals
+ QObject::disconnect(this, &Q3DSEngine::stereoModeChanged, 0, 0);
+
if (!m_uipPresentations.isEmpty()) {
for (UipPresentation &pres : m_uipPresentations) {
if (pres.sceneManager)
diff --git a/src/runtime/q3dsscenemanager.cpp b/src/runtime/q3dsscenemanager.cpp
index bdfc797..8b6cfbd 100644
--- a/src/runtime/q3dsscenemanager.cpp
+++ b/src/runtime/q3dsscenemanager.cpp
@@ -726,8 +726,6 @@ Q3DSSceneManager::Scene Q3DSSceneManager::buildScene(Q3DSUipPresentation *presen
this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
}
- QObject::disconnect(m_engine, &Q3DSEngine::stereoModeChanged, 0, 0);
-
// Kick off the Qt3D scene.
m_rootEntity = new Qt3DCore::QEntity;
m_rootEntity->setObjectName(QString(QLatin1String("non-layer root for presentation %1")).arg(m_presentation->name()));