forked from qt-creator/qt-creator
C++: Release more documents.
- fix memory leak in find-usages - do not retain snapshot in search history - when an editor is invisible for more than 2 minutes, release the backing snapshot Retaining snapshots will retain their documents, and if done for too long, the memory consumption might grow. This is especially the case when switching to a different kit (Qt version): in that case, the new versions of headers will be indexed, while the old ones stay around. Task-number: QTCREATORBUG-5583 Task-number: QTCREATORBUG-7645 Task-number: QTCREATORBUG-9842 Change-Id: I045eda1565e0a3fa702baeffaab9c12662f90289 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
committed by
Nikolai Kosjar
parent
d58da4bd7e
commit
566be0995d
@@ -41,6 +41,7 @@ SnapshotUpdater::SnapshotUpdater(const QString &fileInEditor)
|
||||
, m_fileInEditor(fileInEditor)
|
||||
, m_editorDefinesChangedSinceLastUpdate(false)
|
||||
, m_usePrecompiledHeaders(false)
|
||||
, m_forceSnapshotInvalidation(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -62,6 +63,11 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy)
|
||||
|
||||
updateProjectPart();
|
||||
|
||||
if (m_forceSnapshotInvalidation) {
|
||||
invalidateSnapshot = true;
|
||||
m_forceSnapshotInvalidation = false;
|
||||
}
|
||||
|
||||
if (m_projectPart) {
|
||||
configFile += m_projectPart->defines;
|
||||
includePaths = m_projectPart->includePaths;
|
||||
@@ -186,6 +192,14 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy)
|
||||
}
|
||||
}
|
||||
|
||||
void SnapshotUpdater::releaseSnapshot()
|
||||
{
|
||||
QMutexLocker locker(&m_mutex);
|
||||
m_snapshot = Snapshot();
|
||||
m_deps = DependencyTable();
|
||||
m_forceSnapshotInvalidation = true;
|
||||
}
|
||||
|
||||
Document::Ptr SnapshotUpdater::document() const
|
||||
{
|
||||
QMutexLocker locker(&m_mutex);
|
||||
|
||||
Reference in New Issue
Block a user