CMakeProjectManager: Use QtConcurrent invocation for async run

Change-Id: I03b23a6bd32bfaa435ddddab1a7ab47a5203ff44
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Jarek Kobus
2023-03-03 22:06:23 +01:00
parent ab523ee083
commit 4ae94a9910
3 changed files with 15 additions and 10 deletions

View File

@@ -16,6 +16,7 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QLoggingCategory>
#include <QPromise>
using namespace Utils;
@@ -825,7 +826,7 @@ static QStringList uniqueTargetFiles(const Configuration &config)
return files;
}
FileApiData FileApiParser::parseData(QFutureInterface<std::shared_ptr<FileApiQtcData>> &fi,
FileApiData FileApiParser::parseData(QPromise<std::shared_ptr<FileApiQtcData>> &promise,
const FilePath &replyFilePath,
const QString &cmakeBuildType,
QString &errorMessage)
@@ -836,8 +837,8 @@ FileApiData FileApiParser::parseData(QFutureInterface<std::shared_ptr<FileApiQtc
FileApiData result;
const auto cancelCheck = [&fi, &errorMessage] {
if (fi.isCanceled()) {
const auto cancelCheck = [&promise, &errorMessage] {
if (promise.isCanceled()) {
errorMessage = Tr::tr("CMake parsing was canceled.");
return true;
}

View File

@@ -14,13 +14,17 @@
#include <utils/fileutils.h>
#include <QDir>
#include <QFutureInterface>
#include <QString>
#include <QVector>
#include <QVersionNumber>
#include <vector>
QT_BEGIN_NAMESPACE
template <typename Ret>
class QPromise;
QT_END_NAMESPACE
namespace CMakeProjectManager::Internal {
namespace FileApiDetails {
@@ -218,7 +222,7 @@ public:
class FileApiParser
{
public:
static FileApiData parseData(QFutureInterface<std::shared_ptr<FileApiQtcData>> &fi,
static FileApiData parseData(QPromise<std::shared_ptr<FileApiQtcData>> &promise,
const Utils::FilePath &replyFilePath,
const QString &cmakeBuildType,
QString &errorMessage);

View File

@@ -5,7 +5,6 @@
#include "cmakeprocess.h"
#include "cmakeprojectmanagertr.h"
#include "cmakeprojectplugin.h"
#include "cmakespecificsettings.h"
#include "fileapidataextractor.h"
#include "fileapiparser.h"
@@ -15,6 +14,7 @@
#include <projectexplorer/projectexplorer.h>
#include <utils/algorithm.h>
#include <utils/asynctask.h>
#include <utils/qtcassert.h>
#include <utils/runextensions.h>
@@ -235,11 +235,11 @@ void FileApiReader::endState(const FilePath &replyFilePath, bool restoredFromBac
m_lastReplyTimestamp = replyFilePath.lastModified();
m_future = runAsync(ProjectExplorerPlugin::sharedThreadPool(),
m_future = Utils::asyncRun(ProjectExplorerPlugin::sharedThreadPool(),
[replyFilePath, sourceDirectory, buildDirectory, cmakeBuildType](
QFutureInterface<std::shared_ptr<FileApiQtcData>> &fi) {
QPromise<std::shared_ptr<FileApiQtcData>> &promise) {
auto result = std::make_shared<FileApiQtcData>();
FileApiData data = FileApiParser::parseData(fi,
FileApiData data = FileApiParser::parseData(promise,
replyFilePath,
cmakeBuildType,
result->errorMessage);
@@ -248,7 +248,7 @@ void FileApiReader::endState(const FilePath &replyFilePath, bool restoredFromBac
else
qWarning() << result->errorMessage;
fi.reportResult(result);
promise.addResult(result);
});
onResultReady(m_future.value(),
this,