From e8ba82f1f4a8cd337c37ff60d8ef479af9f43fdc Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Tue, 2 Jun 2009 15:27:13 +0200 Subject: Protected modelmanager's snapshot. --- src/plugins/cpptools/cppmodelmanager.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/plugins/cpptools/cppmodelmanager.cpp') 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 openedEditors = m_core->editorManager()->openedEditors(); foreach (Core::IEditor *editor, openedEditors) { if (editor->file()->fileName() == fileName) { @@ -1074,7 +1079,9 @@ void CppModelManager::parse(QFutureInterface &future, void CppModelManager::GC() { + protectSnapshot.lock(); Snapshot documents = m_snapshot; + protectSnapshot.unlock(); QSet processed; QStringList todo = projectFiles(); @@ -1105,7 +1112,10 @@ void CppModelManager::GC() } emit aboutToRemoveFiles(removedFiles); + + protectSnapshot.lock(); m_snapshot = documents; + protectSnapshot.unlock(); } -- cgit v1.2.1