From a0db7c79910caf843a260e4891c29f41e43c7776 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Sun, 5 Nov 2023 00:03:13 +0100 Subject: [PATCH] TaskTree: Simplify calling storage done handlers on destruction Get rid of callStorageDoneHandlers() function which is very similar to the d'tor's body. Introduce m_callStorageDoneHandlersOnDestruction flag instead. Change-Id: Ib9ca3e5fb3e2c5bc7fb8de8f305244bbd5558f4e Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: hjk --- src/libs/solutions/tasking/tasktree.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/libs/solutions/tasking/tasktree.cpp b/src/libs/solutions/tasking/tasktree.cpp index dae251f6d00..8b779d18e49 100644 --- a/src/libs/solutions/tasking/tasktree.cpp +++ b/src/libs/solutions/tasking/tasktree.cpp @@ -1056,13 +1056,13 @@ public: ~RuntimeData(); static QList createStorages(const TaskContainer::ConstData &constData); - void callStorageDoneHandlers(); bool updateSuccessBit(bool success); int currentLimit() const; const ConstData &m_constData; const QList m_storageIdList; bool m_successBit = true; + bool m_callStorageDoneHandlersOnDestruction = false; int m_doneCount = 0; Guard m_startGuard; }; @@ -1237,15 +1237,6 @@ QList TaskContainer::RuntimeData::createStorages(const TaskContainer::Const return storageIdList; } -void TaskContainer::RuntimeData::callStorageDoneHandlers() -{ - for (int i = m_constData.m_storageList.size() - 1; i >= 0; --i) { // iterate in reverse order - const TreeStorageBase storage = m_constData.m_storageList[i]; - const int storageId = m_storageIdList.value(i); - m_constData.m_taskTreePrivate->callDoneHandler(storage, storageId); - } -} - static bool initialSuccessBit(WorkflowPolicy workflowPolicy) { switch (workflowPolicy) { @@ -1274,6 +1265,8 @@ TaskContainer::RuntimeData::~RuntimeData() for (int i = m_constData.m_storageList.size() - 1; i >= 0; --i) { // iterate in reverse order const TreeStorageBase storage = m_constData.m_storageList[i]; const int storageId = m_storageIdList.value(i); + if (m_callStorageDoneHandlersOnDestruction) + m_constData.m_taskTreePrivate->callDoneHandler(storage, storageId); storage.deleteStorage(storageId); } } @@ -1418,7 +1411,7 @@ bool TaskContainer::invokeDoneHandler(DoneWith result) const GroupItem::GroupHandler &groupHandler = m_constData.m_groupHandler; if (groupHandler.m_doneHandler && shouldCall(groupHandler.m_callDoneIf, result)) success = invokeHandler(this, groupHandler.m_doneHandler, result); - m_runtimeData->callStorageDoneHandlers(); + m_runtimeData->m_callStorageDoneHandlersOnDestruction = true; m_runtimeData.reset(); return success; }