QmlDesigner: Destroy old view before each navigator preview generation

If you triggered another preview generation while previous
is still going through the async loop, it was possible for puppet to
crash or create a preview image with e.g. both material and model
previews overlapping.

Fixes: QDS-5600
Change-Id: Ia11e01cff0503483dc4152aa412c3f9aea7fea6d
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Miikka Heikkinen
2021-11-26 11:24:02 +02:00
parent 3858181e61
commit 09b2ceb96a
@@ -1000,6 +1000,7 @@ void Qt5InformationNodeInstanceServer::doRenderModelNode3DImageView()
#ifdef QUICK3D_MODULE
m_modelNode3DImageViewAsyncData.cleanup();
if (m_modelNode3DImageViewData.rootItem) {
QMetaObject::invokeMethod(m_modelNode3DImageViewData.rootItem, "destroyView");
if (!m_modelNode3DImageViewData.contentItem)
m_modelNode3DImageViewData.contentItem = getContentItemForRendering(m_modelNode3DImageViewData.rootItem);