forked from qt-creator/qt-creator
CppProjectUpdater: Reuse TaskTreeRunner
Change-Id: I204041d44bce386b75c43b5d6686671e04bd2b30 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -18,13 +18,11 @@
|
|||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
|
using namespace Tasking;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace CppEditor {
|
namespace CppEditor {
|
||||||
|
|
||||||
CppProjectUpdater::CppProjectUpdater() = default;
|
|
||||||
CppProjectUpdater::~CppProjectUpdater() = default;
|
|
||||||
|
|
||||||
void CppProjectUpdater::update(const ProjectUpdateInfo &projectUpdateInfo,
|
void CppProjectUpdater::update(const ProjectUpdateInfo &projectUpdateInfo,
|
||||||
const QList<ProjectExplorer::ExtraCompiler *> &extraCompilers)
|
const QList<ProjectExplorer::ExtraCompiler *> &extraCompilers)
|
||||||
{
|
{
|
||||||
@@ -69,7 +67,6 @@ void CppProjectUpdater::update(const ProjectUpdateInfo &projectUpdateInfo,
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto onDone = [this, storage, compilers](DoneWith result) {
|
const auto onDone = [this, storage, compilers](DoneWith result) {
|
||||||
m_taskTree.release()->deleteLater();
|
|
||||||
if (result != DoneWith::Success)
|
if (result != DoneWith::Success)
|
||||||
return;
|
return;
|
||||||
QList<ExtraCompiler *> extraCompilers;
|
QList<ExtraCompiler *> extraCompilers;
|
||||||
@@ -90,15 +87,15 @@ void CppProjectUpdater::update(const ProjectUpdateInfo &projectUpdateInfo,
|
|||||||
Group(tasks),
|
Group(tasks),
|
||||||
onGroupDone(onDone)
|
onGroupDone(onDone)
|
||||||
};
|
};
|
||||||
m_taskTree.reset(new TaskTree(root));
|
m_taskTreeRunner.start(root, [](TaskTree *taskTree) {
|
||||||
auto progress = new Core::TaskProgress(m_taskTree.get());
|
auto progress = new Core::TaskProgress(taskTree);
|
||||||
progress->setDisplayName(Tr::tr("Preparing C++ Code Model"));
|
progress->setDisplayName(Tr::tr("Preparing C++ Code Model"));
|
||||||
m_taskTree->start();
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void CppProjectUpdater::cancel()
|
void CppProjectUpdater::cancel()
|
||||||
{
|
{
|
||||||
m_taskTree.reset();
|
m_taskTreeRunner.reset();
|
||||||
m_futureSynchronizer.cancelAllFutures();
|
m_futureSynchronizer.cancelAllFutures();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -8,10 +8,11 @@
|
|||||||
#include <projectexplorer/projectupdater.h>
|
#include <projectexplorer/projectupdater.h>
|
||||||
#include <projectexplorer/rawprojectpart.h>
|
#include <projectexplorer/rawprojectpart.h>
|
||||||
|
|
||||||
|
#include <solutions/tasking/tasktreerunner.h>
|
||||||
|
|
||||||
#include <utils/futuresynchronizer.h>
|
#include <utils/futuresynchronizer.h>
|
||||||
|
|
||||||
namespace ProjectExplorer { class ExtraCompiler; }
|
namespace ProjectExplorer { class ExtraCompiler; }
|
||||||
namespace Tasking { class TaskTree; }
|
|
||||||
|
|
||||||
namespace CppEditor {
|
namespace CppEditor {
|
||||||
|
|
||||||
@@ -33,16 +34,13 @@ class CPPEDITOR_EXPORT CppProjectUpdater final
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CppProjectUpdater();
|
|
||||||
~CppProjectUpdater() override;
|
|
||||||
|
|
||||||
void update(const ProjectExplorer::ProjectUpdateInfo &projectUpdateInfo,
|
void update(const ProjectExplorer::ProjectUpdateInfo &projectUpdateInfo,
|
||||||
const QList<ProjectExplorer::ExtraCompiler *> &extraCompilers) override;
|
const QList<ProjectExplorer::ExtraCompiler *> &extraCompilers) override;
|
||||||
void cancel() override;
|
void cancel() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Utils::FutureSynchronizer m_futureSynchronizer;
|
Utils::FutureSynchronizer m_futureSynchronizer;
|
||||||
std::unique_ptr<Tasking::TaskTree> m_taskTree;
|
Tasking::TaskTreeRunner m_taskTreeRunner;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace CppEditor
|
} // namespace CppEditor
|
||||||
|
Reference in New Issue
Block a user