diff options
author | Eike Ziller <eike.ziller@qt.io> | 2024-05-16 09:29:51 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2024-05-21 09:56:32 +0000 |
commit | c676ec825f45364421e3463021113062aad6919b (patch) | |
tree | 3cc41566eaebd7aa6301a6e0ec9d39523ff76adf | |
parent | 3cd72806f82dc357f8c42153abc9956c3651cab6 (diff) |
AsyncTask: Centralize setting global future synchronizer
Move the global FutureSynchronizer to Utils and use it
by default for AsyncTask (if that is in the main thread).
This way setting a synchronizer is less prone to be forgotten.
Individual uses can still override this.
Change-Id: I1a12bf4d7f4cb5be99668bf0a4797108c2fe6448
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
28 files changed, 31 insertions, 78 deletions
diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index f0c7e930b4..9aa10709be 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -17,8 +17,8 @@ #include <utils/futuresynchronizer.h> #include <utils/hostosinfo.h> #include <utils/mimeutils.h> -#include <utils/qtcprocess.h> #include <utils/qtcassert.h> +#include <utils/qtcprocess.h> #include <utils/qtcsettings.h> #include <utils/threadutils.h> @@ -436,7 +436,7 @@ QString PluginManager::systemInformation() FutureSynchronizer *PluginManager::futureSynchronizer() { - return d->m_futureSynchronizer.get(); + return Utils::futureSynchronizer(); } /*! @@ -981,10 +981,7 @@ void PluginManagerPrivate::startDelayedInitialize() */ PluginManagerPrivate::PluginManagerPrivate(PluginManager *pluginManager) : q(pluginManager) -{ - m_futureSynchronizer.reset(new FutureSynchronizer); -} - +{} /*! \internal @@ -1047,7 +1044,11 @@ void PluginManagerPrivate::stopAll() */ void PluginManagerPrivate::deleteAll() { - m_futureSynchronizer.reset(); // Synchronize all futures from all plugins + // Guard against someone playing with the setting + QTC_ASSERT( + Utils::futureSynchronizer()->isCancelOnWait(), + Utils::futureSynchronizer()->cancelAllFutures()); + Utils::futureSynchronizer()->waitForFinished(); // Synchronize all futures from all plugins Utils::reverseForeach(loadQueue(), [this](PluginSpec *spec) { loadPlugin(spec, PluginSpec::Deleted); }); diff --git a/src/libs/extensionsystem/pluginmanager_p.h b/src/libs/extensionsystem/pluginmanager_p.h index a761614223..ad9d4f81ee 100644 --- a/src/libs/extensionsystem/pluginmanager_p.h +++ b/src/libs/extensionsystem/pluginmanager_p.h @@ -136,7 +136,6 @@ public: QWaitCondition m_scenarioWaitCondition; PluginManager::ProcessData m_creatorProcessData; - std::unique_ptr<Utils::FutureSynchronizer> m_futureSynchronizer; private: PluginManager *q; diff --git a/src/libs/utils/async.h b/src/libs/utils/async.h index af6fb3fd85..8c7155bc13 100644 --- a/src/libs/utils/async.h +++ b/src/libs/utils/async.h @@ -7,6 +7,7 @@ #include "futuresynchronizer.h" #include "qtcassert.h" +#include "threadutils.h" #include <solutions/tasking/tasktree.h> @@ -130,7 +131,9 @@ template <typename ResultType> class Async : public AsyncBase { public: - Async() { + Async() + : m_synchronizer(isMainThread() ? futureSynchronizer() : nullptr) + { connect(&m_watcher, &QFutureWatcherBase::finished, this, &AsyncBase::done); connect(&m_watcher, &QFutureWatcherBase::resultReadyAt, this, &AsyncBase::resultReadyAt); } diff --git a/src/libs/utils/futuresynchronizer.cpp b/src/libs/utils/futuresynchronizer.cpp index da3347f35e..912de677b9 100644 --- a/src/libs/utils/futuresynchronizer.cpp +++ b/src/libs/utils/futuresynchronizer.cpp @@ -3,6 +3,9 @@ #include "futuresynchronizer.h" +#include "qtcassert.h" +#include "threadutils.h" + /*! \class Utils::FutureSynchronizer \inmodule QtCreator @@ -62,4 +65,18 @@ void FutureSynchronizer::flushFinishedFutures() m_futures = newFutures; } +Q_GLOBAL_STATIC(FutureSynchronizer, s_futureSynchronizer); + +/*! + Returns a global FutureSynchronizer. + The application should cancel and wait for the tasks in this synchronizer before actually + unloading any libraries. This is for example done by the plugin manager in Qt Creator. + May only be accessed by the main thread. +*/ +FutureSynchronizer *futureSynchronizer() +{ + QTC_ASSERT(isMainThread(), return nullptr); + return s_futureSynchronizer; +} + } // namespace Utils diff --git a/src/libs/utils/futuresynchronizer.h b/src/libs/utils/futuresynchronizer.h index 29b1f5e456..83391dbc72 100644 --- a/src/libs/utils/futuresynchronizer.h +++ b/src/libs/utils/futuresynchronizer.h @@ -42,4 +42,6 @@ private: bool m_cancelOnWait = true; }; +QTCREATOR_UTILS_EXPORT FutureSynchronizer *futureSynchronizer(); + } // namespace Utils diff --git a/src/plugins/android/androidsdkdownloader.cpp b/src/plugins/android/androidsdkdownloader.cpp index f3238b8c66..a0b178c5f1 100644 --- a/src/plugins/android/androidsdkdownloader.cpp +++ b/src/plugins/android/androidsdkdownloader.cpp @@ -8,14 +8,11 @@ #include <coreplugin/icore.h> -#include <extensionsystem/pluginmanager.h> - #include <solutions/tasking/barrier.h> #include <solutions/tasking/networkquery.h> #include <utils/async.h> #include <utils/filepath.h> -#include <utils/futuresynchronizer.h> #include <utils/networkaccessmanager.h> #include <utils/unarchiver.h> @@ -170,7 +167,6 @@ GroupItem downloadSdkRecipe() return SetupResult::StopWithError; async.setConcurrentCallData(validateFileIntegrity, *storage->sdkFileName, androidConfig().getSdkToolsSha256()); - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); storage->progressDialog->setRange(0, 0); storage->progressDialog->setLabelText(Tr::tr("Verifying package integrity...")); return SetupResult::Continue; diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index 20803b719e..4dc62f29f6 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -19,7 +19,6 @@ #include <coreplugin/navigationwidget.h> #include <extensionsystem/iplugin.h> -#include <extensionsystem/pluginmanager.h> #include <projectexplorer/buildsystem.h> #include <projectexplorer/project.h> @@ -496,7 +495,6 @@ static Group dtoRecipe(const Storage<DtoStorageType<DtoType>> &dtoStorage) const auto deserialize = [](QPromise<expected_str<DtoType>> &promise, const QByteArray &input) { promise.addResult(DtoType::deserializeExpected(input)); }; - task.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); task.setConcurrentCallData(deserialize, **storage); return SetupResult::Continue; }; diff --git a/src/plugins/clangcodemodel/clangdlocatorfilters.cpp b/src/plugins/clangcodemodel/clangdlocatorfilters.cpp index 469dfeec95..5bf5915044 100644 --- a/src/plugins/clangcodemodel/clangdlocatorfilters.cpp +++ b/src/plugins/clangcodemodel/clangdlocatorfilters.cpp @@ -10,8 +10,6 @@ #include <cppeditor/cppeditortr.h> #include <cppeditor/cpplocatorfilter.h> -#include <extensionsystem/pluginmanager.h> - #include <languageclient/currentdocumentsymbolsrequest.h> #include <languageclient/locatorfilter.h> @@ -186,7 +184,6 @@ static LocatorMatcherTask currentDocumentMatcher() }; const auto onFilterSetup = [=](Async<void> &async) { - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(filterCurrentResults, *storage, *resultStorage, TextDocument::currentTextDocument()->plainText()); }; diff --git a/src/plugins/clangtools/clangtoolrunner.cpp b/src/plugins/clangtools/clangtoolrunner.cpp index af3539b2ac..795135e285 100644 --- a/src/plugins/clangtools/clangtoolrunner.cpp +++ b/src/plugins/clangtools/clangtoolrunner.cpp @@ -14,8 +14,6 @@ #include <cppeditor/cppprojectfile.h> #include <cppeditor/cpptoolsreuse.h> -#include <extensionsystem/pluginmanager.h> - #include <utils/async.h> #include <utils/qtcprocess.h> #include <utils/qtcassert.h> @@ -208,7 +206,6 @@ GroupItem clangToolTask(const AnalyzeUnits &units, data.setConcurrentCallData(&parseDiagnostics, storage->outputFilePath, input.diagnosticsFilter); - data.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); }; const auto onReadDone = [storage, input, outputHandler, iterator]( const Async<expected_str<Diagnostics>> &data, DoneWith result) { diff --git a/src/plugins/coreplugin/actionsfilter.cpp b/src/plugins/coreplugin/actionsfilter.cpp index 93efa1dd2c..8b5f23df71 100644 --- a/src/plugins/coreplugin/actionsfilter.cpp +++ b/src/plugins/coreplugin/actionsfilter.cpp @@ -10,8 +10,6 @@ #include "icore.h" #include "locator/locatormanager.h" -#include <extensionsystem/pluginmanager.h> - #include <utils/algorithm.h> #include <utils/async.h> #include <utils/fuzzymatcher.h> @@ -192,7 +190,6 @@ LocatorMatcherTasks ActionsFilter::matchers() storage->reportOutput(m_entries); return SetupResult::StopWithSuccess; } - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(matches, *storage, m_entries); return SetupResult::Continue; }; diff --git a/src/plugins/coreplugin/locator/directoryfilter.cpp b/src/plugins/coreplugin/locator/directoryfilter.cpp index 38eac7efd0..23b853682d 100644 --- a/src/plugins/coreplugin/locator/directoryfilter.cpp +++ b/src/plugins/coreplugin/locator/directoryfilter.cpp @@ -6,8 +6,6 @@ #include "locator.h" #include "../coreplugintr.h" -#include <extensionsystem/pluginmanager.h> - #include <utils/algorithm.h> #include <utils/async.h> #include <utils/fileutils.h> @@ -89,7 +87,6 @@ DirectoryFilter::DirectoryFilter(Id id) return SetupResult::StopWithSuccess; // Group stops, skips async task }; const auto onSetup = [this](Async<FilePaths> &async) { - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(&refresh, m_directories, m_filters, m_exclusionFilters, displayName()); }; diff --git a/src/plugins/coreplugin/locator/filesystemfilter.cpp b/src/plugins/coreplugin/locator/filesystemfilter.cpp index f108382d70..6b484635e4 100644 --- a/src/plugins/coreplugin/locator/filesystemfilter.cpp +++ b/src/plugins/coreplugin/locator/filesystemfilter.cpp @@ -10,8 +10,6 @@ #include "../vcsmanager.h" #include "locatormanager.h" -#include <extensionsystem/pluginmanager.h> - #include <utils/algorithm.h> #include <utils/async.h> #include <utils/checkablemessagebox.h> @@ -312,7 +310,6 @@ LocatorMatcherTasks FileSystemFilter::matchers() const auto onSetup = [storage, includeHidden = m_includeHidden, shortcut = shortcutString()] (Async<void> &async) { - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(matches, *storage, shortcut, DocumentManager::fileDialogInitialDirectory(), includeHidden); }; diff --git a/src/plugins/coreplugin/locator/ilocatorfilter.cpp b/src/plugins/coreplugin/locator/ilocatorfilter.cpp index 4b012f6398..9769fa82d6 100644 --- a/src/plugins/coreplugin/locator/ilocatorfilter.cpp +++ b/src/plugins/coreplugin/locator/ilocatorfilter.cpp @@ -1464,7 +1464,6 @@ LocatorMatcherTask LocatorFileCache::matcher() const // no provider is set or it returned empty generator that->bumpExecutionId(); - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(&filter, *storage, *that); return SetupResult::Continue; }; diff --git a/src/plugins/coreplugin/locator/opendocumentsfilter.cpp b/src/plugins/coreplugin/locator/opendocumentsfilter.cpp index 719de23098..ede24d5b89 100644 --- a/src/plugins/coreplugin/locator/opendocumentsfilter.cpp +++ b/src/plugins/coreplugin/locator/opendocumentsfilter.cpp @@ -6,8 +6,6 @@ #include "../coreplugintr.h" #include "../editormanager/documentmodel.h" -#include <extensionsystem/pluginmanager.h> - #include <utils/algorithm.h> #include <utils/async.h> #include <utils/link.h> @@ -77,7 +75,6 @@ LocatorMatcherTasks OpenDocumentsFilter::matchers() const auto onSetup = [storage](Async<void> &async) { const QList<Entry> editorsData = Utils::transform(DocumentModel::entries(), [](const DocumentModel::Entry *e) { return Entry{e->filePath(), e->displayName()}; }); - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(matchEditors, *storage, editorsData); }; diff --git a/src/plugins/coreplugin/locator/spotlightlocatorfilter.cpp b/src/plugins/coreplugin/locator/spotlightlocatorfilter.cpp index b360ad595d..d8f07178b4 100644 --- a/src/plugins/coreplugin/locator/spotlightlocatorfilter.cpp +++ b/src/plugins/coreplugin/locator/spotlightlocatorfilter.cpp @@ -6,8 +6,6 @@ #include "../coreplugintr.h" #include "../messagemanager.h" -#include <extensionsystem/pluginmanager.h> - #include <utils/algorithm.h> #include <utils/async.h> #include <utils/commandline.h> @@ -198,7 +196,6 @@ LocatorMatcherTasks SpotlightLocatorFilter::matchers() ? insensArgs : sensArgs; const CommandLine cmd(FilePath::fromString(command), expander->expand(args), CommandLine::Raw); - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(matches, *storage, cmd, sortResults); return SetupResult::Continue; }; diff --git a/src/plugins/coreplugin/plugininstallwizard.cpp b/src/plugins/coreplugin/plugininstallwizard.cpp index 4d4ba69de9..34be2ceedf 100644 --- a/src/plugins/coreplugin/plugininstallwizard.cpp +++ b/src/plugins/coreplugin/plugininstallwizard.cpp @@ -242,7 +242,6 @@ public: return SetupResult::StopWithError; async.setConcurrentCallData(checkContents, m_tempDir->path()); - async.setFutureSynchronizer(PluginManager::futureSynchronizer()); return SetupResult::Continue; }; const auto onCheckerDone = [this](const Async<ArchiveIssue> &async) { diff --git a/src/plugins/cppeditor/cpplocatorfilter.cpp b/src/plugins/cppeditor/cpplocatorfilter.cpp index 8fab8f4dcd..7526d3dc9f 100644 --- a/src/plugins/cppeditor/cpplocatorfilter.cpp +++ b/src/plugins/cppeditor/cpplocatorfilter.cpp @@ -11,8 +11,6 @@ #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/ieditor.h> -#include <extensionsystem/pluginmanager.h> - #include <utils/algorithm.h> #include <utils/async.h> #include <utils/fuzzymatcher.h> @@ -108,7 +106,6 @@ LocatorMatcherTask locatorMatcher(IndexItem::ItemType type, const EntryFromIndex Storage<LocatorStorage> storage; const auto onSetup = [=](Async<void> &async) { - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(matchesFor, *storage, type, converter); }; return {AsyncTask<void>(onSetup), storage}; @@ -306,7 +303,6 @@ LocatorMatcherTask currentDocumentMatcher() Storage<LocatorStorage> storage; const auto onSetup = [=](Async<void> &async) { - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(matchesForCurrentDocument, *storage, currentFileName()); }; return {AsyncTask<void>(onSetup), storage}; diff --git a/src/plugins/diffeditor/diffeditorplugin.cpp b/src/plugins/diffeditor/diffeditorplugin.cpp index da2e4daaf2..22492b5123 100644 --- a/src/plugins/diffeditor/diffeditorplugin.cpp +++ b/src/plugins/diffeditor/diffeditorplugin.cpp @@ -13,8 +13,6 @@ #include <coreplugin/editormanager/documentmodel.h> #include <coreplugin/editormanager/editormanager.h> -#include <extensionsystem/pluginmanager.h> - #include <texteditor/textdocument.h> #include <utils/async.h> @@ -121,7 +119,6 @@ DiffFilesController::DiffFilesController(IDocument *document) const auto onDiffSetup = [this, reloadInput = inputList.at(i)](Async<FileData> &async) { async.setConcurrentCallData( DiffFile(ignoreWhitespace(), contextLineCount()), reloadInput); - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); }; const auto onDiffDone = [outputList, i](const Async<FileData> &async) { diff --git a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp index ecdb87f80b..65fde112c3 100644 --- a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp +++ b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp @@ -12,8 +12,6 @@ #include <coreplugin/minisplitter.h> #include <coreplugin/progressmanager/progressmanager.h> -#include <extensionsystem/pluginmanager.h> - #include <texteditor/displaysettings.h> #include <texteditor/fontsettings.h> #include <texteditor/textdocument.h> @@ -868,7 +866,6 @@ void SideBySideDiffEditorWidget::restoreState() void SideBySideDiffEditorWidget::showDiff() { m_asyncTask.reset(new Async<SideBySideShowResults>()); - m_asyncTask->setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); m_controller.setBusyShowing(true); connect(m_asyncTask.get(), &AsyncBase::done, this, [this] { diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp index 31d8e1b190..0b34db53d9 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp @@ -10,8 +10,6 @@ #include <coreplugin/icore.h> #include <coreplugin/progressmanager/progressmanager.h> -#include <extensionsystem/pluginmanager.h> - #include <texteditor/fontsettings.h> #include <texteditor/textdocument.h> #include <texteditor/texteditorsettings.h> @@ -451,7 +449,6 @@ void UnifiedDiffEditorWidget::showDiff() } m_asyncTask.reset(new Async<UnifiedShowResult>()); - m_asyncTask->setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); m_controller.setBusyShowing(true); connect(m_asyncTask.get(), &AsyncBase::done, this, [this] { if (m_asyncTask->isCanceled() || !m_asyncTask->isResultAvailable()) { diff --git a/src/plugins/help/helpindexfilter.cpp b/src/plugins/help/helpindexfilter.cpp index c535fe31b0..2820c634a3 100644 --- a/src/plugins/help/helpindexfilter.cpp +++ b/src/plugins/help/helpindexfilter.cpp @@ -10,7 +10,6 @@ #include <coreplugin/helpmanager.h> #include <coreplugin/icore.h> -#include <extensionsystem/pluginmanager.h> #include <utils/async.h> #include <utils/utilsicons.h> @@ -95,7 +94,6 @@ LocatorMatcherTasks HelpIndexFilter::matchers() } const QStringList cache = m_lastEntry.isEmpty() || !storage->input().contains(m_lastEntry) ? m_allIndicesCache : m_lastIndicesCache; - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(matches, *storage, cache, m_icon); }; const auto onDone = [this, storage](const Async<QStringList> &async) { diff --git a/src/plugins/languageclient/locatorfilter.cpp b/src/plugins/languageclient/locatorfilter.cpp index ccebcd7679..4fb8cea19a 100644 --- a/src/plugins/languageclient/locatorfilter.cpp +++ b/src/plugins/languageclient/locatorfilter.cpp @@ -8,8 +8,6 @@ #include "languageclientmanager.h" #include "languageclienttr.h" -#include <extensionsystem/pluginmanager.h> - #include <utils/async.h> #include <utils/fuzzymatcher.h> @@ -70,7 +68,6 @@ LocatorMatcherTask locatorMatcher(Client *client, int maxResultCount, const QList<SymbolInformation> results = *resultStorage; if (results.isEmpty()) return SetupResult::StopWithSuccess; - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(filterResults, *storage, client, results, filter); return SetupResult::Continue; }; @@ -130,7 +127,6 @@ LocatorMatcherTask currentDocumentMatcher() }; const auto onFilterSetup = [storage, resultStorage](Async<void> &async) { - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(filterCurrentResults, *storage, *resultStorage); }; diff --git a/src/plugins/projectexplorer/extracompiler.cpp b/src/plugins/projectexplorer/extracompiler.cpp index 932e5c1bd7..d15dd465c3 100644 --- a/src/plugins/projectexplorer/extracompiler.cpp +++ b/src/plugins/projectexplorer/extracompiler.cpp @@ -11,8 +11,6 @@ #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/idocument.h> -#include <extensionsystem/pluginmanager.h> - #include <solutions/tasking/tasktreerunner.h> #include <utils/async.h> @@ -326,7 +324,6 @@ GroupItem ProcessExtraCompiler::taskItemImpl(const ContentProvider &provider) const auto onSetup = [this, provider](Async<FileNameToContentsHash> &async) { async.setThreadPool(extraCompilerThreadPool()); // The passed synchronizer has cancelOnWait set to true by default. - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(&ProcessExtraCompiler::runInThread, this, command(), workingDirectory(), arguments(), provider, buildEnvironment()); }; diff --git a/src/plugins/python/pythonsettings.cpp b/src/plugins/python/pythonsettings.cpp index cad296ae5d..bfc411c6c2 100644 --- a/src/plugins/python/pythonsettings.cpp +++ b/src/plugins/python/pythonsettings.cpp @@ -751,11 +751,9 @@ PythonSettings::PythonSettings() initFromSettings(Core::ICore::settings()); const auto onRegistrySetup = [](Async<QList<Interpreter>> &task) { - task.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); task.setConcurrentCallData(pythonsFromRegistry); }; const auto onPathSetup = [](Async<QList<Interpreter>> &task) { - task.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); task.setConcurrentCallData(pythonsFromPath); }; const auto onTaskDone = [](const Async<QList<Interpreter>> &task) { diff --git a/src/plugins/qmljstools/qmljsfunctionfilter.cpp b/src/plugins/qmljstools/qmljsfunctionfilter.cpp index 0453d11b9c..c6f8dfa4fd 100644 --- a/src/plugins/qmljstools/qmljsfunctionfilter.cpp +++ b/src/plugins/qmljstools/qmljsfunctionfilter.cpp @@ -5,8 +5,6 @@ #include "qmljslocatordata.h" #include "qmljstoolstr.h" -#include <extensionsystem/pluginmanager.h> - #include <utils/algorithm.h> #include <utils/async.h> @@ -81,7 +79,6 @@ LocatorMatcherTasks QmlJSFunctionsFilter::matchers() Storage<LocatorStorage> storage; const auto onSetup = [storage, entries = m_data->entries()](Async<void> &async) { - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(matches, *storage, entries); }; diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index dd0108b7b9..8490d6b2c2 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -15,8 +15,6 @@ #include <coreplugin/icore.h> #include <coreplugin/messagemanager.h> -#include <extensionsystem/pluginmanager.h> - #include <projectexplorer/devicesupport/devicemanager.h> #include <projectexplorer/devicesupport/filetransfer.h> #include <projectexplorer/devicesupport/filetransferinterface.h> @@ -1622,8 +1620,6 @@ private: const auto onCreateDirSetup = [iteratorParentDirs](Async<expected_str<void>> &async) { async.setConcurrentCallData(createDir, *iteratorParentDirs); - if (Utils::isMainThread()) - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); }; const auto onCreateDirDone = [this, @@ -1641,8 +1637,6 @@ private: const auto onCopySetup = [iterator](Async<expected_str<void>> &async) { async.setConcurrentCallData(copyFile, *iterator); - if (Utils::isMainThread()) - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); }; const auto onCopyDone = [this, iterator, counterStorage]( diff --git a/src/plugins/remotelinux/linuxdevicetester.cpp b/src/plugins/remotelinux/linuxdevicetester.cpp index d6ab3a9745..be9cb71686 100644 --- a/src/plugins/remotelinux/linuxdevicetester.cpp +++ b/src/plugins/remotelinux/linuxdevicetester.cpp @@ -7,8 +7,6 @@ #include "remotelinuxtr.h" #include "utils/async.h" -#include <extensionsystem/pluginmanager.h> - #include <projectexplorer/devicesupport/deviceusedportsgatherer.h> #include <projectexplorer/devicesupport/filetransfer.h> #include <projectexplorer/projectexplorerconstants.h> @@ -102,7 +100,6 @@ GroupItem GenericLinuxDeviceTesterPrivate::connectionTask() const const auto onSetup = [this](Async<bool> &task) { emit q->progressMessage(Tr::tr("Connecting to device...")); task.setConcurrentCallData([device = m_device] { return device->tryToConnect(); }); - task.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); }; const auto onDone = [this](const Async<bool> &task) { const bool success = task.isResultAvailable() && task.result(); diff --git a/src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp b/src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp index 4ba6baba34..8ab4a7946f 100644 --- a/src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp +++ b/src/plugins/vcsbase/vcsbasediffeditorcontroller.cpp @@ -3,11 +3,8 @@ #include "vcsbasediffeditorcontroller.h" -#include <extensionsystem/pluginmanager.h> - #include <utils/async.h> #include <utils/environment.h> -#include <utils/futuresynchronizer.h> #include <utils/qtcprocess.h> using namespace DiffEditor; @@ -41,7 +38,6 @@ VcsBaseDiffEditorController::~VcsBaseDiffEditorController() GroupItem VcsBaseDiffEditorController::postProcessTask(const Storage<QString> &inputStorage) { const auto onSetup = [inputStorage](Async<QList<FileData>> &async) { - async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); async.setConcurrentCallData(&DiffUtils::readPatchWithPromise, *inputStorage); }; const auto onDone = [this](const Async<QList<FileData>> &async, DoneWith result) { |