diff options
Diffstat (limited to 'src/qmlmodels/qqmltableinstancemodel.cpp')
-rw-r--r-- | src/qmlmodels/qqmltableinstancemodel.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/qmlmodels/qqmltableinstancemodel.cpp b/src/qmlmodels/qqmltableinstancemodel.cpp index 4152cbe3ea..332a5447b1 100644 --- a/src/qmlmodels/qqmltableinstancemodel.cpp +++ b/src/qmlmodels/qqmltableinstancemodel.cpp @@ -232,14 +232,17 @@ QQmlInstanceModel::ReleaseFlags QQmlTableInstanceModel::release(QObject *object, } // The item is not reused or referenced by anyone, so just delete it - destroyModelItem(modelItem); + destroyModelItem(modelItem, Deferred); return QQmlInstanceModel::Destroyed; } -void QQmlTableInstanceModel::destroyModelItem(QQmlDelegateModelItem *modelItem) +void QQmlTableInstanceModel::destroyModelItem(QQmlDelegateModelItem *modelItem, DestructionMode mode) { emit destroyingItem(modelItem->object); - modelItem->destroyObject(); + if (mode == Deferred) + modelItem->destroyObject(); + else + delete modelItem->object; delete modelItem; } @@ -284,7 +287,9 @@ void QQmlTableInstanceModel::cancel(int index) void QQmlTableInstanceModel::drainReusableItemsPool(int maxPoolTime) { - m_reusableItemsPool.drain(maxPoolTime, [=](QQmlDelegateModelItem *modelItem){ destroyModelItem(modelItem); }); + m_reusableItemsPool.drain(maxPoolTime, [this](QQmlDelegateModelItem *modelItem) { + destroyModelItem(modelItem, Immediate); + }); } void QQmlTableInstanceModel::reuseItem(QQmlDelegateModelItem *item, int newModelIndex) |