ProjectInfoGenerator: Use QPromise for async calls

Change-Id: Ibf95090bee773cabcaed82a79687508e1f017059
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Jarek Kobus
2023-02-12 02:08:11 +01:00
parent 8240333f96
commit 62489e49f8
4 changed files with 18 additions and 23 deletions

View File

@@ -10,30 +10,24 @@
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/taskhub.h>
#include <utils/qtcassert.h>
#include <QPromise>
#include <QTimer>
#include <set>
using namespace ProjectExplorer;
using namespace Utils;
namespace CppEditor::Internal {
ProjectInfoGenerator::ProjectInfoGenerator(
const QFutureInterface<ProjectInfo::ConstPtr> &futureInterface,
const ProjectUpdateInfo &projectUpdateInfo)
: m_futureInterface(futureInterface)
, m_projectUpdateInfo(projectUpdateInfo)
ProjectInfoGenerator::ProjectInfoGenerator(const ProjectUpdateInfo &projectUpdateInfo)
: m_projectUpdateInfo(projectUpdateInfo)
{
}
ProjectInfo::ConstPtr ProjectInfoGenerator::generate()
ProjectInfo::ConstPtr ProjectInfoGenerator::generate(const QPromise<ProjectInfo::ConstPtr> &promise)
{
QVector<ProjectPart::ConstPtr> projectParts;
for (const RawProjectPart &rpp : m_projectUpdateInfo.rawProjectParts) {
if (m_futureInterface.isCanceled())
if (promise.isCanceled())
return {};
for (const ProjectPart::ConstPtr &part : createProjectParts(
rpp, m_projectUpdateInfo.projectFilePath)) {