summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMäättä Antti <antti.maatta@qt.io>2018-02-09 09:56:29 +0200
committerAntti Määttä <antti.maatta@qt.io>2018-02-09 10:00:34 +0000
commit36af0b46e3ff8886c1c9be6f5e656a5dd61dda1e (patch)
tree4ba4215bdc51efa15de9bff022c02e431ae340e1
parent7336a79b7e5295c7522c1598bef7d8eb0b7b0db4 (diff)
Fix qml steamer initialization if item is set late
Task-number: QT3DS-1022 Change-Id: I8dd7c818bf8d63903b8be6a6d90e35ebc76e63cf Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
-rw-r--r--src/QtExtras/qmlstreamer/q3dsqmlstreamrenderer.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/QtExtras/qmlstreamer/q3dsqmlstreamrenderer.cpp b/src/QtExtras/qmlstreamer/q3dsqmlstreamrenderer.cpp
index d431aa12..38cd63b4 100644
--- a/src/QtExtras/qmlstreamer/q3dsqmlstreamrenderer.cpp
+++ b/src/QtExtras/qmlstreamer/q3dsqmlstreamrenderer.cpp
@@ -327,7 +327,25 @@ void Q3DSQmlStreamRenderer::uninitialize()
void Q3DSQmlStreamRenderer::setItem(QQuickItem *item)
{
- m_rootItem = item;
+ if (item && m_rootItem && m_initialized) {
+ QMutexLocker lock(&m_renderMutex);
+ m_rootItem->setParentItem(nullptr);
+ m_rootItem = item;
+ m_rootItem->setParentItem(m_quickWindow->contentItem());
+ updateSizes();
+ } else {
+ if (item && m_rootItem != item) {
+ m_rootItem = item;
+
+ m_rootItem->setParentItem(m_quickWindow->contentItem());
+ updateSizes();
+
+ connect(m_renderControl, &QQuickRenderControl::renderRequested,
+ this, &Q3DSQmlStreamRenderer::requestUpdate);
+ connect(m_renderControl, &QQuickRenderControl::sceneChanged,
+ this, &Q3DSQmlStreamRenderer::requestUpdate);
+ }
+ }
}
bool Q3DSQmlStreamRenderer::event(QEvent *event)