forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -17,8 +17,8 @@
|
|||||||
#include <utils/futuresynchronizer.h>
|
#include <utils/futuresynchronizer.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/mimeutils.h>
|
#include <utils/mimeutils.h>
|
||||||
#include <utils/qtcprocess.h>
|
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/qtcsettings.h>
|
#include <utils/qtcsettings.h>
|
||||||
#include <utils/threadutils.h>
|
#include <utils/threadutils.h>
|
||||||
|
|
||||||
@@ -436,7 +436,7 @@ QString PluginManager::systemInformation()
|
|||||||
|
|
||||||
FutureSynchronizer *PluginManager::futureSynchronizer()
|
FutureSynchronizer *PluginManager::futureSynchronizer()
|
||||||
{
|
{
|
||||||
return d->m_futureSynchronizer.get();
|
return Utils::futureSynchronizer();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -981,10 +981,7 @@ void PluginManagerPrivate::startDelayedInitialize()
|
|||||||
*/
|
*/
|
||||||
PluginManagerPrivate::PluginManagerPrivate(PluginManager *pluginManager) :
|
PluginManagerPrivate::PluginManagerPrivate(PluginManager *pluginManager) :
|
||||||
q(pluginManager)
|
q(pluginManager)
|
||||||
{
|
{}
|
||||||
m_futureSynchronizer.reset(new FutureSynchronizer);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\internal
|
\internal
|
||||||
@@ -1047,7 +1044,11 @@ void PluginManagerPrivate::stopAll()
|
|||||||
*/
|
*/
|
||||||
void PluginManagerPrivate::deleteAll()
|
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) {
|
Utils::reverseForeach(loadQueue(), [this](PluginSpec *spec) {
|
||||||
loadPlugin(spec, PluginSpec::Deleted);
|
loadPlugin(spec, PluginSpec::Deleted);
|
||||||
});
|
});
|
||||||
|
@@ -136,7 +136,6 @@ public:
|
|||||||
QWaitCondition m_scenarioWaitCondition;
|
QWaitCondition m_scenarioWaitCondition;
|
||||||
|
|
||||||
PluginManager::ProcessData m_creatorProcessData;
|
PluginManager::ProcessData m_creatorProcessData;
|
||||||
std::unique_ptr<Utils::FutureSynchronizer> m_futureSynchronizer;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PluginManager *q;
|
PluginManager *q;
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#include "futuresynchronizer.h"
|
#include "futuresynchronizer.h"
|
||||||
#include "qtcassert.h"
|
#include "qtcassert.h"
|
||||||
|
#include "threadutils.h"
|
||||||
|
|
||||||
#include <solutions/tasking/tasktree.h>
|
#include <solutions/tasking/tasktree.h>
|
||||||
|
|
||||||
@@ -130,7 +131,9 @@ template <typename ResultType>
|
|||||||
class Async : public AsyncBase
|
class Async : public AsyncBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Async() {
|
Async()
|
||||||
|
: m_synchronizer(isMainThread() ? futureSynchronizer() : nullptr)
|
||||||
|
{
|
||||||
connect(&m_watcher, &QFutureWatcherBase::finished, this, &AsyncBase::done);
|
connect(&m_watcher, &QFutureWatcherBase::finished, this, &AsyncBase::done);
|
||||||
connect(&m_watcher, &QFutureWatcherBase::resultReadyAt, this, &AsyncBase::resultReadyAt);
|
connect(&m_watcher, &QFutureWatcherBase::resultReadyAt, this, &AsyncBase::resultReadyAt);
|
||||||
}
|
}
|
||||||
|
@@ -3,6 +3,9 @@
|
|||||||
|
|
||||||
#include "futuresynchronizer.h"
|
#include "futuresynchronizer.h"
|
||||||
|
|
||||||
|
#include "qtcassert.h"
|
||||||
|
#include "threadutils.h"
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class Utils::FutureSynchronizer
|
\class Utils::FutureSynchronizer
|
||||||
\inmodule QtCreator
|
\inmodule QtCreator
|
||||||
@@ -62,4 +65,18 @@ void FutureSynchronizer::flushFinishedFutures()
|
|||||||
m_futures = newFutures;
|
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
|
} // namespace Utils
|
||||||
|
@@ -42,4 +42,6 @@ private:
|
|||||||
bool m_cancelOnWait = true;
|
bool m_cancelOnWait = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
QTCREATOR_UTILS_EXPORT FutureSynchronizer *futureSynchronizer();
|
||||||
|
|
||||||
} // namespace Utils
|
} // namespace Utils
|
||||||
|
@@ -8,14 +8,11 @@
|
|||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <solutions/tasking/barrier.h>
|
#include <solutions/tasking/barrier.h>
|
||||||
#include <solutions/tasking/networkquery.h>
|
#include <solutions/tasking/networkquery.h>
|
||||||
|
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/filepath.h>
|
#include <utils/filepath.h>
|
||||||
#include <utils/futuresynchronizer.h>
|
|
||||||
#include <utils/networkaccessmanager.h>
|
#include <utils/networkaccessmanager.h>
|
||||||
#include <utils/unarchiver.h>
|
#include <utils/unarchiver.h>
|
||||||
|
|
||||||
@@ -170,7 +167,6 @@ GroupItem downloadSdkRecipe()
|
|||||||
return SetupResult::StopWithError;
|
return SetupResult::StopWithError;
|
||||||
async.setConcurrentCallData(validateFileIntegrity, *storage->sdkFileName,
|
async.setConcurrentCallData(validateFileIntegrity, *storage->sdkFileName,
|
||||||
androidConfig().getSdkToolsSha256());
|
androidConfig().getSdkToolsSha256());
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
storage->progressDialog->setRange(0, 0);
|
storage->progressDialog->setRange(0, 0);
|
||||||
storage->progressDialog->setLabelText(Tr::tr("Verifying package integrity..."));
|
storage->progressDialog->setLabelText(Tr::tr("Verifying package integrity..."));
|
||||||
return SetupResult::Continue;
|
return SetupResult::Continue;
|
||||||
|
@@ -19,7 +19,6 @@
|
|||||||
#include <coreplugin/navigationwidget.h>
|
#include <coreplugin/navigationwidget.h>
|
||||||
|
|
||||||
#include <extensionsystem/iplugin.h>
|
#include <extensionsystem/iplugin.h>
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <projectexplorer/buildsystem.h>
|
#include <projectexplorer/buildsystem.h>
|
||||||
#include <projectexplorer/project.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) {
|
const auto deserialize = [](QPromise<expected_str<DtoType>> &promise, const QByteArray &input) {
|
||||||
promise.addResult(DtoType::deserializeExpected(input));
|
promise.addResult(DtoType::deserializeExpected(input));
|
||||||
};
|
};
|
||||||
task.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
task.setConcurrentCallData(deserialize, **storage);
|
task.setConcurrentCallData(deserialize, **storage);
|
||||||
return SetupResult::Continue;
|
return SetupResult::Continue;
|
||||||
};
|
};
|
||||||
|
@@ -10,8 +10,6 @@
|
|||||||
#include <cppeditor/cppeditortr.h>
|
#include <cppeditor/cppeditortr.h>
|
||||||
#include <cppeditor/cpplocatorfilter.h>
|
#include <cppeditor/cpplocatorfilter.h>
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <languageclient/currentdocumentsymbolsrequest.h>
|
#include <languageclient/currentdocumentsymbolsrequest.h>
|
||||||
#include <languageclient/locatorfilter.h>
|
#include <languageclient/locatorfilter.h>
|
||||||
|
|
||||||
@@ -186,7 +184,6 @@ static LocatorMatcherTask currentDocumentMatcher()
|
|||||||
};
|
};
|
||||||
|
|
||||||
const auto onFilterSetup = [=](Async<void> &async) {
|
const auto onFilterSetup = [=](Async<void> &async) {
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(filterCurrentResults, *storage, *resultStorage,
|
async.setConcurrentCallData(filterCurrentResults, *storage, *resultStorage,
|
||||||
TextDocument::currentTextDocument()->plainText());
|
TextDocument::currentTextDocument()->plainText());
|
||||||
};
|
};
|
||||||
|
@@ -14,8 +14,6 @@
|
|||||||
#include <cppeditor/cppprojectfile.h>
|
#include <cppeditor/cppprojectfile.h>
|
||||||
#include <cppeditor/cpptoolsreuse.h>
|
#include <cppeditor/cpptoolsreuse.h>
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
@@ -208,7 +206,6 @@ GroupItem clangToolTask(const AnalyzeUnits &units,
|
|||||||
data.setConcurrentCallData(&parseDiagnostics,
|
data.setConcurrentCallData(&parseDiagnostics,
|
||||||
storage->outputFilePath,
|
storage->outputFilePath,
|
||||||
input.diagnosticsFilter);
|
input.diagnosticsFilter);
|
||||||
data.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
};
|
};
|
||||||
const auto onReadDone = [storage, input, outputHandler, iterator](
|
const auto onReadDone = [storage, input, outputHandler, iterator](
|
||||||
const Async<expected_str<Diagnostics>> &data, DoneWith result) {
|
const Async<expected_str<Diagnostics>> &data, DoneWith result) {
|
||||||
|
@@ -10,8 +10,6 @@
|
|||||||
#include "icore.h"
|
#include "icore.h"
|
||||||
#include "locator/locatormanager.h"
|
#include "locator/locatormanager.h"
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/fuzzymatcher.h>
|
#include <utils/fuzzymatcher.h>
|
||||||
@@ -192,7 +190,6 @@ LocatorMatcherTasks ActionsFilter::matchers()
|
|||||||
storage->reportOutput(m_entries);
|
storage->reportOutput(m_entries);
|
||||||
return SetupResult::StopWithSuccess;
|
return SetupResult::StopWithSuccess;
|
||||||
}
|
}
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(matches, *storage, m_entries);
|
async.setConcurrentCallData(matches, *storage, m_entries);
|
||||||
return SetupResult::Continue;
|
return SetupResult::Continue;
|
||||||
};
|
};
|
||||||
|
@@ -6,8 +6,6 @@
|
|||||||
#include "locator.h"
|
#include "locator.h"
|
||||||
#include "../coreplugintr.h"
|
#include "../coreplugintr.h"
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
@@ -89,7 +87,6 @@ DirectoryFilter::DirectoryFilter(Id id)
|
|||||||
return SetupResult::StopWithSuccess; // Group stops, skips async task
|
return SetupResult::StopWithSuccess; // Group stops, skips async task
|
||||||
};
|
};
|
||||||
const auto onSetup = [this](Async<FilePaths> &async) {
|
const auto onSetup = [this](Async<FilePaths> &async) {
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(&refresh, m_directories, m_filters, m_exclusionFilters,
|
async.setConcurrentCallData(&refresh, m_directories, m_filters, m_exclusionFilters,
|
||||||
displayName());
|
displayName());
|
||||||
};
|
};
|
||||||
|
@@ -10,8 +10,6 @@
|
|||||||
#include "../vcsmanager.h"
|
#include "../vcsmanager.h"
|
||||||
#include "locatormanager.h"
|
#include "locatormanager.h"
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/checkablemessagebox.h>
|
#include <utils/checkablemessagebox.h>
|
||||||
@@ -312,7 +310,6 @@ LocatorMatcherTasks FileSystemFilter::matchers()
|
|||||||
|
|
||||||
const auto onSetup = [storage, includeHidden = m_includeHidden, shortcut = shortcutString()]
|
const auto onSetup = [storage, includeHidden = m_includeHidden, shortcut = shortcutString()]
|
||||||
(Async<void> &async) {
|
(Async<void> &async) {
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(matches, *storage, shortcut,
|
async.setConcurrentCallData(matches, *storage, shortcut,
|
||||||
DocumentManager::fileDialogInitialDirectory(), includeHidden);
|
DocumentManager::fileDialogInitialDirectory(), includeHidden);
|
||||||
};
|
};
|
||||||
|
@@ -1464,7 +1464,6 @@ LocatorMatcherTask LocatorFileCache::matcher() const
|
|||||||
// no provider is set or it returned empty generator
|
// no provider is set or it returned empty generator
|
||||||
that->bumpExecutionId();
|
that->bumpExecutionId();
|
||||||
|
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(&filter, *storage, *that);
|
async.setConcurrentCallData(&filter, *storage, *that);
|
||||||
return SetupResult::Continue;
|
return SetupResult::Continue;
|
||||||
};
|
};
|
||||||
|
@@ -6,8 +6,6 @@
|
|||||||
#include "../coreplugintr.h"
|
#include "../coreplugintr.h"
|
||||||
#include "../editormanager/documentmodel.h"
|
#include "../editormanager/documentmodel.h"
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/link.h>
|
#include <utils/link.h>
|
||||||
@@ -77,7 +75,6 @@ LocatorMatcherTasks OpenDocumentsFilter::matchers()
|
|||||||
const auto onSetup = [storage](Async<void> &async) {
|
const auto onSetup = [storage](Async<void> &async) {
|
||||||
const QList<Entry> editorsData = Utils::transform(DocumentModel::entries(),
|
const QList<Entry> editorsData = Utils::transform(DocumentModel::entries(),
|
||||||
[](const DocumentModel::Entry *e) { return Entry{e->filePath(), e->displayName()}; });
|
[](const DocumentModel::Entry *e) { return Entry{e->filePath(), e->displayName()}; });
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(matchEditors, *storage, editorsData);
|
async.setConcurrentCallData(matchEditors, *storage, editorsData);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -6,8 +6,6 @@
|
|||||||
#include "../coreplugintr.h"
|
#include "../coreplugintr.h"
|
||||||
#include "../messagemanager.h"
|
#include "../messagemanager.h"
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/commandline.h>
|
#include <utils/commandline.h>
|
||||||
@@ -198,7 +196,6 @@ LocatorMatcherTasks SpotlightLocatorFilter::matchers()
|
|||||||
? insensArgs : sensArgs;
|
? insensArgs : sensArgs;
|
||||||
const CommandLine cmd(FilePath::fromString(command), expander->expand(args),
|
const CommandLine cmd(FilePath::fromString(command), expander->expand(args),
|
||||||
CommandLine::Raw);
|
CommandLine::Raw);
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(matches, *storage, cmd, sortResults);
|
async.setConcurrentCallData(matches, *storage, cmd, sortResults);
|
||||||
return SetupResult::Continue;
|
return SetupResult::Continue;
|
||||||
};
|
};
|
||||||
|
@@ -242,7 +242,6 @@ public:
|
|||||||
return SetupResult::StopWithError;
|
return SetupResult::StopWithError;
|
||||||
|
|
||||||
async.setConcurrentCallData(checkContents, m_tempDir->path());
|
async.setConcurrentCallData(checkContents, m_tempDir->path());
|
||||||
async.setFutureSynchronizer(PluginManager::futureSynchronizer());
|
|
||||||
return SetupResult::Continue;
|
return SetupResult::Continue;
|
||||||
};
|
};
|
||||||
const auto onCheckerDone = [this](const Async<ArchiveIssue> &async) {
|
const auto onCheckerDone = [this](const Async<ArchiveIssue> &async) {
|
||||||
|
@@ -11,8 +11,6 @@
|
|||||||
#include <coreplugin/editormanager/editormanager.h>
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
#include <coreplugin/editormanager/ieditor.h>
|
#include <coreplugin/editormanager/ieditor.h>
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/fuzzymatcher.h>
|
#include <utils/fuzzymatcher.h>
|
||||||
@@ -108,7 +106,6 @@ LocatorMatcherTask locatorMatcher(IndexItem::ItemType type, const EntryFromIndex
|
|||||||
Storage<LocatorStorage> storage;
|
Storage<LocatorStorage> storage;
|
||||||
|
|
||||||
const auto onSetup = [=](Async<void> &async) {
|
const auto onSetup = [=](Async<void> &async) {
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(matchesFor, *storage, type, converter);
|
async.setConcurrentCallData(matchesFor, *storage, type, converter);
|
||||||
};
|
};
|
||||||
return {AsyncTask<void>(onSetup), storage};
|
return {AsyncTask<void>(onSetup), storage};
|
||||||
@@ -306,7 +303,6 @@ LocatorMatcherTask currentDocumentMatcher()
|
|||||||
Storage<LocatorStorage> storage;
|
Storage<LocatorStorage> storage;
|
||||||
|
|
||||||
const auto onSetup = [=](Async<void> &async) {
|
const auto onSetup = [=](Async<void> &async) {
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(matchesForCurrentDocument, *storage, currentFileName());
|
async.setConcurrentCallData(matchesForCurrentDocument, *storage, currentFileName());
|
||||||
};
|
};
|
||||||
return {AsyncTask<void>(onSetup), storage};
|
return {AsyncTask<void>(onSetup), storage};
|
||||||
|
@@ -13,8 +13,6 @@
|
|||||||
#include <coreplugin/editormanager/documentmodel.h>
|
#include <coreplugin/editormanager/documentmodel.h>
|
||||||
#include <coreplugin/editormanager/editormanager.h>
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <texteditor/textdocument.h>
|
#include <texteditor/textdocument.h>
|
||||||
|
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
@@ -121,7 +119,6 @@ DiffFilesController::DiffFilesController(IDocument *document)
|
|||||||
const auto onDiffSetup = [this, reloadInput = inputList.at(i)](Async<FileData> &async) {
|
const auto onDiffSetup = [this, reloadInput = inputList.at(i)](Async<FileData> &async) {
|
||||||
async.setConcurrentCallData(
|
async.setConcurrentCallData(
|
||||||
DiffFile(ignoreWhitespace(), contextLineCount()), reloadInput);
|
DiffFile(ignoreWhitespace(), contextLineCount()), reloadInput);
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto onDiffDone = [outputList, i](const Async<FileData> &async) {
|
const auto onDiffDone = [outputList, i](const Async<FileData> &async) {
|
||||||
|
@@ -12,8 +12,6 @@
|
|||||||
#include <coreplugin/minisplitter.h>
|
#include <coreplugin/minisplitter.h>
|
||||||
#include <coreplugin/progressmanager/progressmanager.h>
|
#include <coreplugin/progressmanager/progressmanager.h>
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <texteditor/displaysettings.h>
|
#include <texteditor/displaysettings.h>
|
||||||
#include <texteditor/fontsettings.h>
|
#include <texteditor/fontsettings.h>
|
||||||
#include <texteditor/textdocument.h>
|
#include <texteditor/textdocument.h>
|
||||||
@@ -868,7 +866,6 @@ void SideBySideDiffEditorWidget::restoreState()
|
|||||||
void SideBySideDiffEditorWidget::showDiff()
|
void SideBySideDiffEditorWidget::showDiff()
|
||||||
{
|
{
|
||||||
m_asyncTask.reset(new Async<SideBySideShowResults>());
|
m_asyncTask.reset(new Async<SideBySideShowResults>());
|
||||||
m_asyncTask->setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
m_controller.setBusyShowing(true);
|
m_controller.setBusyShowing(true);
|
||||||
|
|
||||||
connect(m_asyncTask.get(), &AsyncBase::done, this, [this] {
|
connect(m_asyncTask.get(), &AsyncBase::done, this, [this] {
|
||||||
|
@@ -10,8 +10,6 @@
|
|||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <coreplugin/progressmanager/progressmanager.h>
|
#include <coreplugin/progressmanager/progressmanager.h>
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <texteditor/fontsettings.h>
|
#include <texteditor/fontsettings.h>
|
||||||
#include <texteditor/textdocument.h>
|
#include <texteditor/textdocument.h>
|
||||||
#include <texteditor/texteditorsettings.h>
|
#include <texteditor/texteditorsettings.h>
|
||||||
@@ -451,7 +449,6 @@ void UnifiedDiffEditorWidget::showDiff()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_asyncTask.reset(new Async<UnifiedShowResult>());
|
m_asyncTask.reset(new Async<UnifiedShowResult>());
|
||||||
m_asyncTask->setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
m_controller.setBusyShowing(true);
|
m_controller.setBusyShowing(true);
|
||||||
connect(m_asyncTask.get(), &AsyncBase::done, this, [this] {
|
connect(m_asyncTask.get(), &AsyncBase::done, this, [this] {
|
||||||
if (m_asyncTask->isCanceled() || !m_asyncTask->isResultAvailable()) {
|
if (m_asyncTask->isCanceled() || !m_asyncTask->isResultAvailable()) {
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
#include <coreplugin/helpmanager.h>
|
#include <coreplugin/helpmanager.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
@@ -95,7 +94,6 @@ LocatorMatcherTasks HelpIndexFilter::matchers()
|
|||||||
}
|
}
|
||||||
const QStringList cache = m_lastEntry.isEmpty() || !storage->input().contains(m_lastEntry)
|
const QStringList cache = m_lastEntry.isEmpty() || !storage->input().contains(m_lastEntry)
|
||||||
? m_allIndicesCache : m_lastIndicesCache;
|
? m_allIndicesCache : m_lastIndicesCache;
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(matches, *storage, cache, m_icon);
|
async.setConcurrentCallData(matches, *storage, cache, m_icon);
|
||||||
};
|
};
|
||||||
const auto onDone = [this, storage](const Async<QStringList> &async) {
|
const auto onDone = [this, storage](const Async<QStringList> &async) {
|
||||||
|
@@ -8,8 +8,6 @@
|
|||||||
#include "languageclientmanager.h"
|
#include "languageclientmanager.h"
|
||||||
#include "languageclienttr.h"
|
#include "languageclienttr.h"
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/fuzzymatcher.h>
|
#include <utils/fuzzymatcher.h>
|
||||||
|
|
||||||
@@ -70,7 +68,6 @@ LocatorMatcherTask locatorMatcher(Client *client, int maxResultCount,
|
|||||||
const QList<SymbolInformation> results = *resultStorage;
|
const QList<SymbolInformation> results = *resultStorage;
|
||||||
if (results.isEmpty())
|
if (results.isEmpty())
|
||||||
return SetupResult::StopWithSuccess;
|
return SetupResult::StopWithSuccess;
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(filterResults, *storage, client, results, filter);
|
async.setConcurrentCallData(filterResults, *storage, client, results, filter);
|
||||||
return SetupResult::Continue;
|
return SetupResult::Continue;
|
||||||
};
|
};
|
||||||
@@ -130,7 +127,6 @@ LocatorMatcherTask currentDocumentMatcher()
|
|||||||
};
|
};
|
||||||
|
|
||||||
const auto onFilterSetup = [storage, resultStorage](Async<void> &async) {
|
const auto onFilterSetup = [storage, resultStorage](Async<void> &async) {
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(filterCurrentResults, *storage, *resultStorage);
|
async.setConcurrentCallData(filterCurrentResults, *storage, *resultStorage);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -11,8 +11,6 @@
|
|||||||
#include <coreplugin/editormanager/editormanager.h>
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
#include <coreplugin/idocument.h>
|
#include <coreplugin/idocument.h>
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <solutions/tasking/tasktreerunner.h>
|
#include <solutions/tasking/tasktreerunner.h>
|
||||||
|
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
@@ -326,7 +324,6 @@ GroupItem ProcessExtraCompiler::taskItemImpl(const ContentProvider &provider)
|
|||||||
const auto onSetup = [this, provider](Async<FileNameToContentsHash> &async) {
|
const auto onSetup = [this, provider](Async<FileNameToContentsHash> &async) {
|
||||||
async.setThreadPool(extraCompilerThreadPool());
|
async.setThreadPool(extraCompilerThreadPool());
|
||||||
// The passed synchronizer has cancelOnWait set to true by default.
|
// The passed synchronizer has cancelOnWait set to true by default.
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(&ProcessExtraCompiler::runInThread, this, command(),
|
async.setConcurrentCallData(&ProcessExtraCompiler::runInThread, this, command(),
|
||||||
workingDirectory(), arguments(), provider, buildEnvironment());
|
workingDirectory(), arguments(), provider, buildEnvironment());
|
||||||
};
|
};
|
||||||
|
@@ -751,11 +751,9 @@ PythonSettings::PythonSettings()
|
|||||||
initFromSettings(Core::ICore::settings());
|
initFromSettings(Core::ICore::settings());
|
||||||
|
|
||||||
const auto onRegistrySetup = [](Async<QList<Interpreter>> &task) {
|
const auto onRegistrySetup = [](Async<QList<Interpreter>> &task) {
|
||||||
task.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
task.setConcurrentCallData(pythonsFromRegistry);
|
task.setConcurrentCallData(pythonsFromRegistry);
|
||||||
};
|
};
|
||||||
const auto onPathSetup = [](Async<QList<Interpreter>> &task) {
|
const auto onPathSetup = [](Async<QList<Interpreter>> &task) {
|
||||||
task.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
task.setConcurrentCallData(pythonsFromPath);
|
task.setConcurrentCallData(pythonsFromPath);
|
||||||
};
|
};
|
||||||
const auto onTaskDone = [](const Async<QList<Interpreter>> &task) {
|
const auto onTaskDone = [](const Async<QList<Interpreter>> &task) {
|
||||||
|
@@ -5,8 +5,6 @@
|
|||||||
#include "qmljslocatordata.h"
|
#include "qmljslocatordata.h"
|
||||||
#include "qmljstoolstr.h"
|
#include "qmljstoolstr.h"
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
|
|
||||||
@@ -81,7 +79,6 @@ LocatorMatcherTasks QmlJSFunctionsFilter::matchers()
|
|||||||
Storage<LocatorStorage> storage;
|
Storage<LocatorStorage> storage;
|
||||||
|
|
||||||
const auto onSetup = [storage, entries = m_data->entries()](Async<void> &async) {
|
const auto onSetup = [storage, entries = m_data->entries()](Async<void> &async) {
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(matches, *storage, entries);
|
async.setConcurrentCallData(matches, *storage, entries);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -15,8 +15,6 @@
|
|||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <coreplugin/messagemanager.h>
|
#include <coreplugin/messagemanager.h>
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <projectexplorer/devicesupport/devicemanager.h>
|
#include <projectexplorer/devicesupport/devicemanager.h>
|
||||||
#include <projectexplorer/devicesupport/filetransfer.h>
|
#include <projectexplorer/devicesupport/filetransfer.h>
|
||||||
#include <projectexplorer/devicesupport/filetransferinterface.h>
|
#include <projectexplorer/devicesupport/filetransferinterface.h>
|
||||||
@@ -1622,8 +1620,6 @@ private:
|
|||||||
|
|
||||||
const auto onCreateDirSetup = [iteratorParentDirs](Async<expected_str<void>> &async) {
|
const auto onCreateDirSetup = [iteratorParentDirs](Async<expected_str<void>> &async) {
|
||||||
async.setConcurrentCallData(createDir, *iteratorParentDirs);
|
async.setConcurrentCallData(createDir, *iteratorParentDirs);
|
||||||
if (Utils::isMainThread())
|
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto onCreateDirDone = [this,
|
const auto onCreateDirDone = [this,
|
||||||
@@ -1641,8 +1637,6 @@ private:
|
|||||||
|
|
||||||
const auto onCopySetup = [iterator](Async<expected_str<void>> &async) {
|
const auto onCopySetup = [iterator](Async<expected_str<void>> &async) {
|
||||||
async.setConcurrentCallData(copyFile, *iterator);
|
async.setConcurrentCallData(copyFile, *iterator);
|
||||||
if (Utils::isMainThread())
|
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto onCopyDone = [this, iterator, counterStorage](
|
const auto onCopyDone = [this, iterator, counterStorage](
|
||||||
|
@@ -7,8 +7,6 @@
|
|||||||
#include "remotelinuxtr.h"
|
#include "remotelinuxtr.h"
|
||||||
#include "utils/async.h"
|
#include "utils/async.h"
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <projectexplorer/devicesupport/deviceusedportsgatherer.h>
|
#include <projectexplorer/devicesupport/deviceusedportsgatherer.h>
|
||||||
#include <projectexplorer/devicesupport/filetransfer.h>
|
#include <projectexplorer/devicesupport/filetransfer.h>
|
||||||
#include <projectexplorer/projectexplorerconstants.h>
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
@@ -102,7 +100,6 @@ GroupItem GenericLinuxDeviceTesterPrivate::connectionTask() const
|
|||||||
const auto onSetup = [this](Async<bool> &task) {
|
const auto onSetup = [this](Async<bool> &task) {
|
||||||
emit q->progressMessage(Tr::tr("Connecting to device..."));
|
emit q->progressMessage(Tr::tr("Connecting to device..."));
|
||||||
task.setConcurrentCallData([device = m_device] { return device->tryToConnect(); });
|
task.setConcurrentCallData([device = m_device] { return device->tryToConnect(); });
|
||||||
task.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
};
|
};
|
||||||
const auto onDone = [this](const Async<bool> &task) {
|
const auto onDone = [this](const Async<bool> &task) {
|
||||||
const bool success = task.isResultAvailable() && task.result();
|
const bool success = task.isResultAvailable() && task.result();
|
||||||
|
@@ -3,11 +3,8 @@
|
|||||||
|
|
||||||
#include "vcsbasediffeditorcontroller.h"
|
#include "vcsbasediffeditorcontroller.h"
|
||||||
|
|
||||||
#include <extensionsystem/pluginmanager.h>
|
|
||||||
|
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/environment.h>
|
#include <utils/environment.h>
|
||||||
#include <utils/futuresynchronizer.h>
|
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
|
|
||||||
using namespace DiffEditor;
|
using namespace DiffEditor;
|
||||||
@@ -41,7 +38,6 @@ VcsBaseDiffEditorController::~VcsBaseDiffEditorController()
|
|||||||
GroupItem VcsBaseDiffEditorController::postProcessTask(const Storage<QString> &inputStorage)
|
GroupItem VcsBaseDiffEditorController::postProcessTask(const Storage<QString> &inputStorage)
|
||||||
{
|
{
|
||||||
const auto onSetup = [inputStorage](Async<QList<FileData>> &async) {
|
const auto onSetup = [inputStorage](Async<QList<FileData>> &async) {
|
||||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
|
||||||
async.setConcurrentCallData(&DiffUtils::readPatchWithPromise, *inputStorage);
|
async.setConcurrentCallData(&DiffUtils::readPatchWithPromise, *inputStorage);
|
||||||
};
|
};
|
||||||
const auto onDone = [this](const Async<QList<FileData>> &async, DoneWith result) {
|
const auto onDone = [this](const Async<QList<FileData>> &async, DoneWith result) {
|
||||||
|
Reference in New Issue
Block a user