QmlPuppet: Fix crash at puppet reset

Puppet cleanup was not handled properly, so derefFromEffectItem() was
not called for all objects that needed it, causing puppet to crash
at shutdown.

Fixes: QDS-3461
Change-Id: I22c0552fe1223789fa42b276ab377d4a9e929955
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Miikka Heikkinen
2020-12-30 14:50:49 +02:00
parent 55ca28f1c7
commit bab69fff77
8 changed files with 45 additions and 27 deletions
@@ -59,8 +59,15 @@ QuickItemNodeInstance::QuickItemNodeInstance(QQuickItem *item)
QuickItemNodeInstance::~QuickItemNodeInstance()
{
if (quickItem() && checkIfRefFromEffect(instanceId()))
designerSupport()->derefFromEffectItem(quickItem());
}
void QuickItemNodeInstance::handleObjectDeletion(QObject *object)
{
auto item = qobject_cast<QQuickItem *>(object);
if (item && checkIfRefFromEffect(instanceId()))
designerSupport()->derefFromEffectItem(item);
ObjectNodeInstance::handleObjectDeletion(object);
}
static bool isContentItem(QQuickItem *item, NodeInstanceServer *nodeInstanceServer)