diff options
| author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-06-02 15:27:13 +0200 |
|---|---|---|
| committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-06-02 15:28:16 +0200 |
| commit | e8ba82f1f4a8cd337c37ff60d8ef479af9f43fdc (patch) | |
| tree | 92032fd2706b5fe58eafa039d861a4c0657646d6 /src/plugins/cpptools/cppmodelmanager.cpp | |
| parent | c5507b63bdbf2df08a69e8f5afca6d4e316e6b61 (diff) | |
| download | qt-creator-e8ba82f1f4a8cd337c37ff60d8ef479af9f43fdc.tar.gz | |
Protected modelmanager's snapshot.
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
| -rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 657286bec5..f807f12bc3 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -582,6 +582,7 @@ CppModelManager::~CppModelManager() Snapshot CppModelManager::snapshot() const { + QMutexLocker locker(&protectSnapshot); return m_snapshot; } @@ -795,7 +796,11 @@ void CppModelManager::emitDocumentUpdated(Document::Ptr doc) void CppModelManager::onDocumentUpdated(Document::Ptr doc) { const QString fileName = doc->fileName(); - m_snapshot[fileName] = doc; + + protectSnapshot.lock(); + m_snapshot.insert(doc); + protectSnapshot.unlock(); + QList<Core::IEditor *> openedEditors = m_core->editorManager()->openedEditors(); foreach (Core::IEditor *editor, openedEditors) { if (editor->file()->fileName() == fileName) { @@ -1074,7 +1079,9 @@ void CppModelManager::parse(QFutureInterface<void> &future, void CppModelManager::GC() { + protectSnapshot.lock(); Snapshot documents = m_snapshot; + protectSnapshot.unlock(); QSet<QString> processed; QStringList todo = projectFiles(); @@ -1105,7 +1112,10 @@ void CppModelManager::GC() } emit aboutToRemoveFiles(removedFiles); + + protectSnapshot.lock(); m_snapshot = documents; + protectSnapshot.unlock(); } |
