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();
 | 
			
		||||
 
 | 
			
		||||
@@ -132,7 +132,7 @@ signals:
 | 
			
		||||
    void documentUpdated();
 | 
			
		||||
    void diagnosticsChanged();
 | 
			
		||||
    void semanticInfoUpdated(CppTools::SemanticInfo);
 | 
			
		||||
    void highlighterStarted(QFuture<TextEditor::HighlightingResult> *, unsigned revision);
 | 
			
		||||
    void highlighterStarted(QFuture<TextEditor::HighlightingResult>, unsigned revision);
 | 
			
		||||
 | 
			
		||||
private slots:
 | 
			
		||||
    void onMimeTypeChanged();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user