summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppsnapshotupdater.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cppsnapshotupdater.cpp')
-rw-r--r--src/plugins/cpptools/cppsnapshotupdater.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/plugins/cpptools/cppsnapshotupdater.cpp b/src/plugins/cpptools/cppsnapshotupdater.cpp
index a6900d3d2c..a534da4d57 100644
--- a/src/plugins/cpptools/cppsnapshotupdater.cpp
+++ b/src/plugins/cpptools/cppsnapshotupdater.cpp
@@ -42,6 +42,7 @@ SnapshotUpdater::SnapshotUpdater(const QString &fileInEditor)
, m_editorDefinesChangedSinceLastUpdate(false)
, m_usePrecompiledHeaders(false)
, m_forceSnapshotInvalidation(false)
+ , m_releaseSourceAndAST(true)
{
}
@@ -161,7 +162,8 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy)
newRev = qMax(rev + 1, newRev);
doc->setRevision(newRev);
modelManager->emitDocumentUpdated(doc);
- doc->releaseSourceAndAST();
+ if (m_releaseSourceAndAST)
+ doc->releaseSourceAndAST();
});
Snapshot globalSnapshot = modelManager->snapshot();
globalSnapshot.remove(fileInEditor());
@@ -245,6 +247,12 @@ void SnapshotUpdater::setEditorDefines(const QByteArray &editorDefines)
}
}
+void SnapshotUpdater::setReleaseSourceAndAST(bool onoff)
+{
+ QMutexLocker locker(&m_mutex);
+ m_releaseSourceAndAST = onoff;
+}
+
void SnapshotUpdater::updateProjectPart()
{
if (m_manuallySetProjectPart) {