diff options
author | Määttä Antti <antti.maatta@qt.io> | 2018-02-09 09:56:29 +0200 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2018-02-09 10:00:34 +0000 |
commit | 36af0b46e3ff8886c1c9be6f5e656a5dd61dda1e (patch) | |
tree | 4ba4215bdc51efa15de9bff022c02e431ae340e1 | |
parent | 7336a79b7e5295c7522c1598bef7d8eb0b7b0db4 (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.cpp | 20 |
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) |