summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/cpptools/builtineditordocumentprocessor.cpp6
-rw-r--r--src/plugins/cpptools/builtinindexingsupport.cpp2
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp6
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp7
-rw-r--r--src/plugins/cpptools/cppmodelmanager.h2
-rw-r--r--src/plugins/cpptools/cppsemanticinfoupdater.cpp4
-rw-r--r--src/plugins/cpptools/symbolsfindfilter.cpp3
7 files changed, 23 insertions, 7 deletions
diff --git a/src/plugins/cpptools/builtineditordocumentprocessor.cpp b/src/plugins/cpptools/builtineditordocumentprocessor.cpp
index b3a184139d..a7a7ac1a33 100644
--- a/src/plugins/cpptools/builtineditordocumentprocessor.cpp
+++ b/src/plugins/cpptools/builtineditordocumentprocessor.cpp
@@ -204,9 +204,11 @@ BuiltinEditorDocumentProcessor::~BuiltinEditorDocumentProcessor()
void BuiltinEditorDocumentProcessor::run()
{
- m_parserFuture = Utils::runAsync(runParser,
+ CppModelManager *mgr = CppModelManager::instance();
+ m_parserFuture = Utils::runAsync(mgr->sharedThreadPool(),
+ runParser,
parser(),
- CppModelManager::instance()->workingCopy());
+ mgr->workingCopy());
}
BaseEditorDocumentParser::Ptr BuiltinEditorDocumentProcessor::parser()
diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp
index 81a5be27df..b2fc32159d 100644
--- a/src/plugins/cpptools/builtinindexingsupport.cpp
+++ b/src/plugins/cpptools/builtinindexingsupport.cpp
@@ -353,7 +353,7 @@ QFuture<void> BuiltinIndexingSupport::refreshSourceFiles(const QSet<QString> &so
params.workingCopy = mgr->workingCopy();
params.sourceFiles = sourceFiles;
- QFuture<void> result = Utils::runAsync(parse, params);
+ QFuture<void> result = Utils::runAsync(mgr->sharedThreadPool(), parse, params);
if (m_synchronizer.futures().size() > 10) {
QList<QFuture<void> > futures = m_synchronizer.futures();
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index d8732be1f9..0f7bc7e2c4 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -365,7 +365,8 @@ void CppFindReferences::findAll_helper(SearchResult *search, Symbol *symbol,
SearchResultWindow::instance()->popup(IOutputPane::ModeSwitch | IOutputPane::WithFocus);
const WorkingCopy workingCopy = m_modelManager->workingCopy();
QFuture<Usage> result;
- result = Utils::runAsync(find_helper, workingCopy, context, symbol);
+ result = Utils::runAsync(m_modelManager->sharedThreadPool(), find_helper,
+ workingCopy, context, symbol);
createWatcher(result, search);
FutureProgress *progress = ProgressManager::addTask(result, tr("Searching for Usages"),
@@ -669,7 +670,8 @@ void CppFindReferences::findMacroUses(const Macro &macro, const QString &replace
}
QFuture<Usage> result;
- result = Utils::runAsync(findMacroUses_helper, workingCopy, snapshot, macro);
+ result = Utils::runAsync(m_modelManager->sharedThreadPool(), findMacroUses_helper,
+ workingCopy, snapshot, macro);
createWatcher(result, search);
FutureProgress *progress = ProgressManager::addTask(result, tr("Searching for Usages"),
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index e8490f9095..4517bd8e9f 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -58,6 +58,7 @@
#include <QDir>
#include <QMutexLocker>
#include <QTextBlock>
+#include <QThreadPool>
#include <QTimer>
#if defined(QTCREATOR_WITH_DUMP_AST) && defined(Q_CC_GNU)
@@ -157,6 +158,7 @@ public:
CppFindReferences *m_findReferences;
SymbolFinder m_symbolFinder;
+ QThreadPool m_threadPool;
bool m_enableGC;
QTimer m_delayedGcTimer;
@@ -1196,4 +1198,9 @@ SymbolFinder *CppModelManager::symbolFinder()
return &d->m_symbolFinder;
}
+QThreadPool *CppModelManager::sharedThreadPool()
+{
+ return &d->m_threadPool;
+}
+
} // namespace CppTools
diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h
index 8d0013a83d..27486045f6 100644
--- a/src/plugins/cpptools/cppmodelmanager.h
+++ b/src/plugins/cpptools/cppmodelmanager.h
@@ -162,6 +162,8 @@ public:
SymbolFinder *symbolFinder();
+ QThreadPool *sharedThreadPool();
+
static QSet<QString> timeStampModifiedFiles(const QList<Document::Ptr> &documentsToCheck);
static Internal::CppSourceProcessor *createSourceProcessor();
diff --git a/src/plugins/cpptools/cppsemanticinfoupdater.cpp b/src/plugins/cpptools/cppsemanticinfoupdater.cpp
index a95c90521c..6df0c69b15 100644
--- a/src/plugins/cpptools/cppsemanticinfoupdater.cpp
+++ b/src/plugins/cpptools/cppsemanticinfoupdater.cpp
@@ -26,6 +26,7 @@
#include "cppsemanticinfoupdater.h"
#include "cpplocalsymbols.h"
+#include "cppmodelmanager.h"
#include <utils/qtcassert.h>
#include <utils/runextensions.h>
@@ -200,7 +201,8 @@ void SemanticInfoUpdater::updateDetached(const SemanticInfo::Source source)
return;
}
- d->m_future = Utils::runAsync(&SemanticInfoUpdaterPrivate::update_helper, d.data(), source);
+ d->m_future = Utils::runAsync(CppModelManager::instance()->sharedThreadPool(),
+ &SemanticInfoUpdaterPrivate::update_helper, d.data(), source);
}
SemanticInfo SemanticInfoUpdater::semanticInfo() const
diff --git a/src/plugins/cpptools/symbolsfindfilter.cpp b/src/plugins/cpptools/symbolsfindfilter.cpp
index 6d88b9deaf..5e98af1c54 100644
--- a/src/plugins/cpptools/symbolsfindfilter.cpp
+++ b/src/plugins/cpptools/symbolsfindfilter.cpp
@@ -145,7 +145,8 @@ void SymbolsFindFilter::startSearch(SearchResult *search)
SymbolSearcher *symbolSearcher = m_manager->indexingSupport()->createSymbolSearcher(parameters, projectFileNames);
connect(watcher, SIGNAL(finished()),
symbolSearcher, SLOT(deleteLater()));
- watcher->setFuture(Utils::runAsync(&SymbolSearcher::runSearch, symbolSearcher));
+ watcher->setFuture(Utils::runAsync(m_manager->sharedThreadPool(),
+ &SymbolSearcher::runSearch, symbolSearcher));
FutureProgress *progress = ProgressManager::addTask(watcher->future(), tr("Searching for Symbol"),
Core::Constants::TASK_SEARCH);
connect(progress, SIGNAL(clicked()), search, SLOT(popup()));