From 2a1553bb9a4f18c27e8c67ec5f613372dabbe585 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Sat, 13 Jan 2024 17:27:51 +0100 Subject: [PATCH] BranchModel: Reuse TaskTreeRunner Change-Id: Idce8e4463e55b9361d85f460a44b7302bf20170f Reviewed-by: Reviewed-by: Orgad Shaneh --- src/plugins/git/branchmodel.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/plugins/git/branchmodel.cpp b/src/plugins/git/branchmodel.cpp index 8b1248830d3..bc44cb23914 100644 --- a/src/plugins/git/branchmodel.cpp +++ b/src/plugins/git/branchmodel.cpp @@ -7,14 +7,16 @@ #include "gitconstants.h" #include "gittr.h" -#include -#include +#include #include #include #include #include +#include +#include + #include #include @@ -228,7 +230,7 @@ public: QString currentSha; QDateTime currentDateTime; QStringList obsoleteLocalBranches; - std::unique_ptr refreshTask; + TaskTreeRunner taskTreeRunner; bool oldBranchesIncluded = false; struct OldEntry @@ -254,6 +256,7 @@ BranchModel::BranchModel(QObject *parent) : // Abuse the sha field for ref prefix d->rootNode->append(new BranchNode(Tr::tr("Local Branches"), "refs/heads")); d->rootNode->append(new BranchNode(Tr::tr("Remote Branches"), "refs/remotes")); + connect(&d->taskTreeRunner, &TaskTreeRunner::done, this, &BranchModel::endResetModel); } BranchModel::~BranchModel() @@ -402,9 +405,9 @@ void BranchModel::clear() void BranchModel::refresh(const FilePath &workingDirectory, ShowError showError) { - if (d->refreshTask) { + if (d->taskTreeRunner.isRunning()) { endResetModel(); // for the running task tree. - d->refreshTask.reset(); // old running tree is reset, no handlers are being called + d->taskTreeRunner.reset(); // old running tree is reset, no handlers are being called } beginResetModel(); clear(); @@ -463,18 +466,11 @@ void BranchModel::refresh(const FilePath &workingDirectory, ShowError showError) } }; - const auto finalize = [this] { - endResetModel(); - d->refreshTask.release()->deleteLater(); - }; - const Group root { topRevisionProc, - ProcessTask(onForEachRefSetup, onForEachRefDone), - onGroupDone(finalize) + ProcessTask(onForEachRefSetup, onForEachRefDone) }; - d->refreshTask.reset(new TaskTree(root)); - d->refreshTask->start(); + d->taskTreeRunner.start(root); } void BranchModel::setCurrentBranch()