diff --git a/src/plugins/cppeditor/cppprojectupdater.cpp b/src/plugins/cppeditor/cppprojectupdater.cpp index 3e208a8bf63..9b9cbf5c9b3 100644 --- a/src/plugins/cppeditor/cppprojectupdater.cpp +++ b/src/plugins/cppeditor/cppprojectupdater.cpp @@ -18,13 +18,11 @@ #include using namespace ProjectExplorer; +using namespace Tasking; using namespace Utils; namespace CppEditor { -CppProjectUpdater::CppProjectUpdater() = default; -CppProjectUpdater::~CppProjectUpdater() = default; - void CppProjectUpdater::update(const ProjectUpdateInfo &projectUpdateInfo, const QList &extraCompilers) { @@ -69,7 +67,6 @@ void CppProjectUpdater::update(const ProjectUpdateInfo &projectUpdateInfo, } const auto onDone = [this, storage, compilers](DoneWith result) { - m_taskTree.release()->deleteLater(); if (result != DoneWith::Success) return; QList extraCompilers; @@ -90,15 +87,15 @@ void CppProjectUpdater::update(const ProjectUpdateInfo &projectUpdateInfo, Group(tasks), onGroupDone(onDone) }; - m_taskTree.reset(new TaskTree(root)); - auto progress = new Core::TaskProgress(m_taskTree.get()); - progress->setDisplayName(Tr::tr("Preparing C++ Code Model")); - m_taskTree->start(); + m_taskTreeRunner.start(root, [](TaskTree *taskTree) { + auto progress = new Core::TaskProgress(taskTree); + progress->setDisplayName(Tr::tr("Preparing C++ Code Model")); + }); } void CppProjectUpdater::cancel() { - m_taskTree.reset(); + m_taskTreeRunner.reset(); m_futureSynchronizer.cancelAllFutures(); } diff --git a/src/plugins/cppeditor/cppprojectupdater.h b/src/plugins/cppeditor/cppprojectupdater.h index 2a8999b69ee..0d9cf8c0357 100644 --- a/src/plugins/cppeditor/cppprojectupdater.h +++ b/src/plugins/cppeditor/cppprojectupdater.h @@ -8,10 +8,11 @@ #include #include +#include + #include namespace ProjectExplorer { class ExtraCompiler; } -namespace Tasking { class TaskTree; } namespace CppEditor { @@ -33,16 +34,13 @@ class CPPEDITOR_EXPORT CppProjectUpdater final Q_OBJECT public: - CppProjectUpdater(); - ~CppProjectUpdater() override; - void update(const ProjectExplorer::ProjectUpdateInfo &projectUpdateInfo, const QList &extraCompilers) override; void cancel() override; private: Utils::FutureSynchronizer m_futureSynchronizer; - std::unique_ptr m_taskTree; + Tasking::TaskTreeRunner m_taskTreeRunner; }; } // namespace CppEditor