forked from qt-creator/qt-creator
Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline
This commit is contained in:
@@ -35,6 +35,7 @@
|
|||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <QtConcurrentRun>
|
#include <QtConcurrentRun>
|
||||||
|
#include <QFutureSynchronizer>
|
||||||
#include <qtconcurrent/runextensions.h>
|
#include <qtconcurrent/runextensions.h>
|
||||||
|
|
||||||
#include <texteditor/itexteditor.h>
|
#include <texteditor/itexteditor.h>
|
||||||
@@ -163,6 +164,7 @@ class CppPreprocessor: public CPlusPlus::Client
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CppPreprocessor(QPointer<CppModelManager> modelManager);
|
CppPreprocessor(QPointer<CppModelManager> modelManager);
|
||||||
|
virtual ~CppPreprocessor();
|
||||||
|
|
||||||
void setWorkingCopy(const QMap<QString, QByteArray> &workingCopy);
|
void setWorkingCopy(const QMap<QString, QByteArray> &workingCopy);
|
||||||
void setIncludePaths(const QStringList &includePaths);
|
void setIncludePaths(const QStringList &includePaths);
|
||||||
@@ -212,6 +214,7 @@ private:
|
|||||||
Document::Ptr m_currentDoc;
|
Document::Ptr m_currentDoc;
|
||||||
QSet<QString> m_todo;
|
QSet<QString> m_todo;
|
||||||
QSet<QString> m_processed;
|
QSet<QString> m_processed;
|
||||||
|
QFutureSynchronizer<void> m_synchronizer;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
@@ -221,6 +224,11 @@ CppPreprocessor::CppPreprocessor(QPointer<CppModelManager> modelManager)
|
|||||||
: snapshot(modelManager->snapshot()),
|
: snapshot(modelManager->snapshot()),
|
||||||
m_modelManager(modelManager),
|
m_modelManager(modelManager),
|
||||||
preprocess(this, &env)
|
preprocess(this, &env)
|
||||||
|
{
|
||||||
|
m_synchronizer.setCancelOnWait(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
CppPreprocessor::~CppPreprocessor()
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
void CppPreprocessor::setWorkingCopy(const QMap<QString, QByteArray> &workingCopy)
|
void CppPreprocessor::setWorkingCopy(const QMap<QString, QByteArray> &workingCopy)
|
||||||
@@ -502,7 +510,7 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type,
|
|||||||
snapshot.insert(doc->fileName(), doc);
|
snapshot.insert(doc->fileName(), doc);
|
||||||
m_todo.remove(fileName);
|
m_todo.remove(fileName);
|
||||||
|
|
||||||
QtConcurrent::run(Process(m_modelManager), doc);
|
m_synchronizer.addFuture(QtConcurrent::run(Process(m_modelManager), doc));
|
||||||
|
|
||||||
(void) switchDocument(previousDoc);
|
(void) switchDocument(previousDoc);
|
||||||
}
|
}
|
||||||
@@ -528,6 +536,8 @@ Document::Ptr CppPreprocessor::switchDocument(Document::Ptr doc)
|
|||||||
CppModelManager::CppModelManager(QObject *parent)
|
CppModelManager::CppModelManager(QObject *parent)
|
||||||
: CppModelManagerInterface(parent)
|
: CppModelManagerInterface(parent)
|
||||||
{
|
{
|
||||||
|
m_synchronizer.setCancelOnWait(true);
|
||||||
|
|
||||||
m_core = Core::ICore::instance(); // FIXME
|
m_core = Core::ICore::instance(); // FIXME
|
||||||
m_dirty = true;
|
m_dirty = true;
|
||||||
|
|
||||||
@@ -702,6 +712,8 @@ QFuture<void> CppModelManager::refreshSourceFiles(const QStringList &sourceFiles
|
|||||||
QFuture<void> result = QtConcurrent::run(&CppModelManager::parse,
|
QFuture<void> result = QtConcurrent::run(&CppModelManager::parse,
|
||||||
preproc, sourceFiles);
|
preproc, sourceFiles);
|
||||||
|
|
||||||
|
m_synchronizer.addFuture(result);
|
||||||
|
|
||||||
if (sourceFiles.count() > 1) {
|
if (sourceFiles.count() > 1) {
|
||||||
m_core->progressManager()->addTask(result, tr("Indexing"),
|
m_core->progressManager()->addTask(result, tr("Indexing"),
|
||||||
CppTools::Constants::TASK_INDEX,
|
CppTools::Constants::TASK_INDEX,
|
||||||
|
@@ -38,6 +38,7 @@
|
|||||||
|
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QFutureInterface>
|
#include <QFutureInterface>
|
||||||
|
#include <QFutureSynchronizer>
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QTextEdit>
|
#include <QTextEdit>
|
||||||
@@ -174,6 +175,8 @@ private:
|
|||||||
QList<Editor> m_todo;
|
QList<Editor> m_todo;
|
||||||
|
|
||||||
QTimer *m_updateEditorSelectionsTimer;
|
QTimer *m_updateEditorSelectionsTimer;
|
||||||
|
|
||||||
|
QFutureSynchronizer<void> m_synchronizer;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
Reference in New Issue
Block a user