diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.h b/src/libs/qmljs/qmljsmodelmanagerinterface.h index 088b4e593c4..2dc00c3ed8b 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.h +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.h @@ -183,6 +183,9 @@ public: // Blocks until all parsing threads are done. Use for testing only! void test_joinAllThreads(); + + template + void addFuture(const QFuture &future) { addFuture(QFuture(future)); } void addFuture(const QFuture &future); QmlJS::Document::Ptr ensuredGetDocumentForPath(const QString &filePath); diff --git a/src/libs/utils/mapreduce.h b/src/libs/utils/mapreduce.h index 255ef825786..826e1f14ae8 100644 --- a/src/libs/utils/mapreduce.h +++ b/src/libs/utils/mapreduce.h @@ -78,7 +78,7 @@ public: m_futureInterface.setProgressRange(0, MAX_PROGRESS); connect(&m_selfWatcher, &QFutureWatcher::canceled, this, &MapReduceBase::cancelAll); - m_selfWatcher.setFuture(futureInterface.future()); + m_selfWatcher.setFuture(QFuture(futureInterface.future())); } void exec() diff --git a/src/plugins/android/androidsdkmanager.cpp b/src/plugins/android/androidsdkmanager.cpp index 3ef62a0c976..b84b6fea84f 100644 --- a/src/plugins/android/androidsdkmanager.cpp +++ b/src/plugins/android/androidsdkmanager.cpp @@ -1127,7 +1127,7 @@ void AndroidSdkManagerPrivate::addWatcher(const QFuture()); - m_activeOperation->setFuture(future); + m_activeOperation->setFuture(QFuture(future)); } void AndroidSdkManagerPrivate::parseCommonArguments(QFutureInterface &fi) diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.h b/src/plugins/coreplugin/progressmanager/progressmanager.h index d421b15b6d0..02587849ba6 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager.h +++ b/src/plugins/coreplugin/progressmanager/progressmanager.h @@ -52,6 +52,12 @@ public: static ProgressManager *instance(); + template + static FutureProgress *addTask(const QFuture &future, const QString &title, + Utils::Id type, ProgressFlags flags = {}) { + return addTask(QFuture(future), title, type, flags); + } + static FutureProgress *addTask(const QFuture &future, const QString &title, Utils::Id type, ProgressFlags flags = {}); static FutureProgress *addTimedTask(const QFutureInterface &fi, const QString &title, diff --git a/src/plugins/cpptools/cppprojectupdater.cpp b/src/plugins/cpptools/cppprojectupdater.cpp index 4d95c5800e3..d17c2609302 100644 --- a/src/plugins/cpptools/cppprojectupdater.cpp +++ b/src/plugins/cpptools/cppprojectupdater.cpp @@ -101,7 +101,6 @@ void CppProjectUpdater::onProjectInfoGenerated() QFuture future = CppModelManager::instance() ->updateProjectInfo(m_futureInterface, m_generateFutureWatcher.result()); - QTC_CHECK(future != QFuture()); } CppProjectUpdaterFactory::CppProjectUpdaterFactory() diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp index ebba5b19f37..3e13bc338cb 100644 --- a/src/plugins/git/gitsubmiteditor.cpp +++ b/src/plugins/git/gitsubmiteditor.cpp @@ -230,7 +230,7 @@ void GitSubmitEditor::updateFileModel() Core::ProgressManager::addTask(m_fetchWatcher.future(), tr("Refreshing Commit Data"), TASK_UPDATE_COMMIT); - GitClient::instance()->addFuture(m_fetchWatcher.future()); + GitClient::instance()->addFuture(QFuture(m_fetchWatcher.future())); } void GitSubmitEditor::forceUpdateFileModel() diff --git a/src/plugins/ios/createsimulatordialog.cpp b/src/plugins/ios/createsimulatordialog.cpp index 1bfcc25f71e..8dfda8ccec2 100644 --- a/src/plugins/ios/createsimulatordialog.cpp +++ b/src/plugins/ios/createsimulatordialog.cpp @@ -62,14 +62,14 @@ CreateSimulatorDialog::CreateSimulatorDialog(QWidget *parent) : }); m_futureSync.setCancelOnWait(true); - m_futureSync.addFuture(Utils::onResultReady(SimulatorControl::updateDeviceTypes(), this, - &CreateSimulatorDialog::populateDeviceTypes)); + m_futureSync.addFuture(QFuture(Utils::onResultReady(SimulatorControl::updateDeviceTypes(), this, + &CreateSimulatorDialog::populateDeviceTypes))); QFuture> runtimesfuture = SimulatorControl::updateRuntimes(); Utils::onResultReady(runtimesfuture, this, [this](const QList &runtimes) { m_runtimes = runtimes; }); - m_futureSync.addFuture(runtimesfuture); + m_futureSync.addFuture(QFuture(runtimesfuture)); populateRuntimes(DeviceTypeInfo()); } diff --git a/src/plugins/ios/iossettingswidget.cpp b/src/plugins/ios/iossettingswidget.cpp index 609a3a9ce91..24209f0b75c 100644 --- a/src/plugins/ios/iossettingswidget.cpp +++ b/src/plugins/ios/iossettingswidget.cpp @@ -134,9 +134,9 @@ void IosSettingsWidget::onStart() .arg(info.name).arg(info.runtimeName).arg(info.state), Utils::StdErrFormat); } else { - futureList << Utils::onResultReady(m_simControl->startSimulator(info.identifier), + futureList << QFuture(Utils::onResultReady(m_simControl->startSimulator(info.identifier), std::bind(onSimOperation, info, statusDialog, - tr("simulator start"), _1)); + tr("simulator start"), _1))); } } @@ -167,12 +167,12 @@ void IosSettingsWidget::onCreate() CreateSimulatorDialog createDialog(this); if (createDialog.exec() == QDialog::Accepted) { - QFuture f = Utils::onResultReady( + QFuture f = QFuture(Utils::onResultReady( m_simControl->createSimulator( createDialog.name(), createDialog.deviceType(), createDialog.runtime()), - std::bind(onSimulatorCreate, createDialog.name(), _1)); + std::bind(onSimulatorCreate, createDialog.name(), _1))); statusDialog->addFutures({ f }); statusDialog->exec(); // Modal dialog returns only when all the operations are done or cancelled. } @@ -201,9 +201,9 @@ void IosSettingsWidget::onReset() QList> futureList; foreach (const SimulatorInfo &info, simulatorInfoList) { - futureList << Utils::onResultReady(m_simControl->resetSimulator(info.identifier), + futureList << QFuture(Utils::onResultReady(m_simControl->resetSimulator(info.identifier), std::bind(onSimOperation, info, statusDialog, - tr("simulator reset"), _1)); + tr("simulator reset"), _1))); } statusDialog->addFutures(futureList); @@ -229,9 +229,9 @@ void IosSettingsWidget::onRename() QPointer statusDialog = new SimulatorOperationDialog(this); statusDialog->setAttribute(Qt::WA_DeleteOnClose); statusDialog->addMessage(tr("Renaming simulator device..."), Utils::NormalMessageFormat); - QFuture f = Utils::onResultReady(m_simControl->renameSimulator(simInfo.identifier, newName), + QFuture f = QFuture(Utils::onResultReady(m_simControl->renameSimulator(simInfo.identifier, newName), std::bind(onSimOperation, simInfo, statusDialog, - tr("simulator rename"), _1)); + tr("simulator rename"), _1))); statusDialog->addFutures({f}); statusDialog->exec(); // Modal dialog returns only when all the operations are done or cancelled. } @@ -258,9 +258,9 @@ void IosSettingsWidget::onDelete() Utils::NormalMessageFormat); QList> futureList; foreach (const SimulatorInfo &info, simulatorInfoList) { - futureList << Utils::onResultReady(m_simControl->deleteSimulator(info.identifier), + futureList << QFuture(Utils::onResultReady(m_simControl->deleteSimulator(info.identifier), std::bind(onSimOperation, info, statusDialog, - tr("simulator delete"), _1)); + tr("simulator delete"), _1))); } statusDialog->addFutures(futureList); @@ -289,10 +289,10 @@ void IosSettingsWidget::onScreenshot() simulatorInfoList.count()), Utils::NormalMessageFormat); QList> futureList; foreach (const SimulatorInfo &info, simulatorInfoList) { - futureList << Utils::onResultReady(m_simControl->takeSceenshot(info.identifier, + futureList << QFuture(Utils::onResultReady(m_simControl->takeSceenshot(info.identifier, generatePath(info)), std::bind(onSimOperation, info, statusDialog, - tr("simulator screenshot"), _1)); + tr("simulator screenshot"), _1))); } statusDialog->addFutures(futureList); diff --git a/src/plugins/ios/iostoolhandler.cpp b/src/plugins/ios/iostoolhandler.cpp index 84d3d44d03f..3d55dbb6662 100644 --- a/src/plugins/ios/iostoolhandler.cpp +++ b/src/plugins/ios/iostoolhandler.cpp @@ -839,7 +839,7 @@ void IosSimulatorToolHandlerPrivate::requestTransferApp(const QString &appBundle if (SimulatorControl::isSimulatorRunning(m_deviceId)) installAppOnSimulator(); else - futureList << Utils::onResultReady(simCtl->startSimulator(m_deviceId), onSimulatorStart); + futureList << QFuture(Utils::onResultReady(simCtl->startSimulator(m_deviceId), onSimulatorStart)); } void IosSimulatorToolHandlerPrivate::requestRunApp(const QString &appBundlePath, @@ -875,7 +875,7 @@ void IosSimulatorToolHandlerPrivate::requestRunApp(const QString &appBundlePath, if (SimulatorControl::isSimulatorRunning(m_deviceId)) launchAppOnSimulator(extraArgs); else - futureList << Utils::onResultReady(simCtl->startSimulator(m_deviceId), onSimulatorStart); + futureList << QFuture(Utils::onResultReady(simCtl->startSimulator(m_deviceId), onSimulatorStart)); } void IosSimulatorToolHandlerPrivate::requestDeviceInfo(const QString &deviceId, int timeout) @@ -928,7 +928,7 @@ void IosSimulatorToolHandlerPrivate::installAppOnSimulator() isTransferringApp(m_bundlePath, m_deviceId, 20, 100, ""); auto installFuture = simCtl->installApp(m_deviceId, Utils::FilePath::fromString(m_bundlePath)); - futureList << Utils::onResultReady(installFuture, onResponseAppInstall); + futureList << QFuture(Utils::onResultReady(installFuture, onResponseAppInstall)); } void IosSimulatorToolHandlerPrivate::launchAppOnSimulator(const QStringList &extraArgs) @@ -991,11 +991,11 @@ void IosSimulatorToolHandlerPrivate::launchAppOnSimulator(const QStringList &ext } }; - futureList << Utils::onResultReady( + futureList << QFuture(Utils::onResultReady( simCtl->launchApp(m_deviceId, bundleId, debugRun, extraArgs, captureConsole ? stdoutFile->fileName() : QString(), captureConsole ? stderrFile->fileName() : QString()), - onResponseAppLaunch); + onResponseAppLaunch)); } bool IosSimulatorToolHandlerPrivate::isResponseValid(const SimulatorControl::ResponseData &responseData) diff --git a/src/plugins/ios/simulatorinfomodel.cpp b/src/plugins/ios/simulatorinfomodel.cpp index fa81d012a84..2ca0427aace 100644 --- a/src/plugins/ios/simulatorinfomodel.cpp +++ b/src/plugins/ios/simulatorinfomodel.cpp @@ -130,8 +130,9 @@ void SimulatorInfoModel::requestSimulatorInfo() return; // Ignore the request if the last request is still pending. m_fetchFuture.clearFutures(); - m_fetchFuture.addFuture(Utils::onResultReady(SimulatorControl::updateAvailableSimulators(), - this, &SimulatorInfoModel::populateSimulators)); + m_fetchFuture.addFuture(QFuture(Utils::onResultReady( + SimulatorControl::updateAvailableSimulators(), + this, &SimulatorInfoModel::populateSimulators))); } void SimulatorInfoModel::populateSimulators(const SimulatorInfoList &simulatorList) diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 32b29cd9abe..cf7f9deb8a7 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -312,7 +312,7 @@ void BaseFileFind::runSearch(SearchResult *search) search->finishSearch(watcher->isCanceled()); }); watcher->setFuture(executeSearch(parameters)); - FutureProgress *progress = ProgressManager::addTask(watcher->future(), + FutureProgress *progress = ProgressManager::addTask(QFuture(watcher->future()), tr("Searching"), Constants::TASK_SEARCH); connect(search, &SearchResult::countChanged, progress, [progress](int c) { diff --git a/src/tools/clangbackend/source/clangasyncjob.h b/src/tools/clangbackend/source/clangasyncjob.h index 69befdcdac7..9299658aa45 100644 --- a/src/tools/clangbackend/source/clangasyncjob.h +++ b/src/tools/clangbackend/source/clangasyncjob.h @@ -63,7 +63,7 @@ public: const QFuture future = Utils::runAsync(stackSize, m_runner); m_futureWatcher.setFuture(future); - return future; + return QFuture(future); } void preventFinalization() final