summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppmodelmanager.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-06-02 15:27:13 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2009-06-02 15:28:16 +0200
commite8ba82f1f4a8cd337c37ff60d8ef479af9f43fdc (patch)
tree92032fd2706b5fe58eafa039d861a4c0657646d6 /src/plugins/cpptools/cppmodelmanager.cpp
parentc5507b63bdbf2df08a69e8f5afca6d4e316e6b61 (diff)
downloadqt-creator-e8ba82f1f4a8cd337c37ff60d8ef479af9f43fdc.tar.gz
Protected modelmanager's snapshot.
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp12
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();
}