From 58af02f0746befaf84f77e70aff7f9521f68b15f Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Wed, 11 Dec 2013 15:19:54 +0100 Subject: 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 --- src/plugins/cpptools/cpptoolseditorsupport.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/plugins/cpptools/cpptoolseditorsupport.cpp') diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp index 2638a127ce..6a31f98f85 100644 --- a/src/plugins/cpptools/cpptoolseditorsupport.cpp +++ b/src/plugins/cpptools/cpptoolseditorsupport.cpp @@ -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(); snapshotUpdater()->releaseSnapshot(); QMutexLocker semanticLocker(&m_lastSemanticInfoLock); m_lastSemanticInfo = SemanticInfo(); -- cgit v1.2.1