diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index a08d66bebef..3d4c73346d6 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -33,7 +33,10 @@ #include "cpptoolsconstants.h" #include "cpptoolseditorsupport.h" +#include +#include #include + #include #include @@ -171,8 +174,6 @@ public: void resetEnvironment(); - void parseCollectedDocuments(); - const QSet &todo() const { return m_todo; } @@ -211,7 +212,6 @@ private: QSet m_included; Document::Ptr m_currentDoc; QSet m_todo; - QList m_documents; }; } // namespace Internal @@ -241,7 +241,7 @@ void CppPreprocessor::setTodo(const QStringList &files) namespace { -class Process +class Process: public std::unary_function { QPointer _modelManager; @@ -250,7 +250,7 @@ public: : _modelManager(modelManager) { } - void operator()(Document::Ptr doc) + void operator()(Document::Ptr doc) const { doc->parse(); doc->check(); @@ -267,22 +267,11 @@ void CppPreprocessor::run(const QString &fileName) { QString absoluteFilePath = fileName; sourceNeeded(absoluteFilePath, IncludeGlobal, /*line = */ 0); - - if (m_documents.size() >= 8) - parseCollectedDocuments(); } void CppPreprocessor::resetEnvironment() { env.reset(); } -void CppPreprocessor::parseCollectedDocuments() -{ - QThread::currentThread()->setPriority(QThread::IdlePriority); - QtConcurrent::blockingMap(m_documents, Process(m_modelManager)); - QThread::currentThread()->setPriority(QThread::NormalPriority); - m_documents.clear(); -} - bool CppPreprocessor::includeFile(const QString &absoluteFilePath, QByteArray *result) { if (absoluteFilePath.isEmpty() || m_included.contains(absoluteFilePath)) { @@ -514,12 +503,11 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type, doc->releaseSource(); snapshot.insert(doc->fileName(), doc); + m_todo.remove(fileName); - m_documents.append(doc); + QtConcurrent::run(Process(m_modelManager), doc); (void) switchDocument(previousDoc); - - m_todo.remove(fileName); } Document::Ptr CppPreprocessor::switchDocument(Document::Ptr doc) @@ -1041,8 +1029,6 @@ void CppModelManager::parse(QFutureInterface &future, QThread::currentThread()->setPriority(QThread::NormalPriority); } - preproc->parseCollectedDocuments(); - future.setProgressValue(files.size()); delete preproc;