forked from qt-creator/qt-creator
C++: release more futures.
The CPPEditorWidget retained two futures, as did the attached future watchers retained them too. Together, each future and the watcher held on to a complete snapshot that would only get released when another future was set. This could result into retaining old snapshots in editors that were invisible/unused for long. Change-Id: I1133e857c620437b4a69b9dad468f6bd458304b8 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
committed by
Eike Ziller
parent
4089012735
commit
58af02f074
@@ -390,7 +390,7 @@ void CppEditorSupport::startHighlighting()
|
||||
|
||||
m_highlighter = m_highlightingSupport->highlightingFuture(doc, snapshot);
|
||||
m_lastHighlightRevision = revision;
|
||||
emit highlighterStarted(&m_highlighter, m_lastHighlightRevision);
|
||||
emit highlighterStarted(m_highlighter, m_lastHighlightRevision);
|
||||
} else {
|
||||
const unsigned revision = currentSource(false).revision;
|
||||
if (m_lastHighlightRevision == revision)
|
||||
@@ -400,7 +400,7 @@ void CppEditorSupport::startHighlighting()
|
||||
static const Document::Ptr dummyDoc;
|
||||
static const Snapshot dummySnapshot;
|
||||
m_highlighter = m_highlightingSupport->highlightingFuture(dummyDoc, dummySnapshot);
|
||||
emit highlighterStarted(&m_highlighter, m_lastHighlightRevision);
|
||||
emit highlighterStarted(m_highlighter, m_lastHighlightRevision);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -500,6 +500,8 @@ void CppEditorSupport::onCurrentEditorChanged()
|
||||
|
||||
void CppEditorSupport::releaseResources()
|
||||
{
|
||||
m_highlighter.cancel();
|
||||
m_highlighter = QFuture<TextEditor::HighlightingResult>();
|
||||
snapshotUpdater()->releaseSnapshot();
|
||||
QMutexLocker semanticLocker(&m_lastSemanticInfoLock);
|
||||
m_lastSemanticInfo = SemanticInfo();
|
||||
|
||||
Reference in New Issue
Block a user