From d0d187f36aa6452f00b6370fd4e1e5ef528cfce9 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Fri, 30 Dec 2016 16:43:44 -0800 Subject: [PATCH] Reduce the impact of leaking Editor, Selection, & Cursor objects Signed-off-by: Nathan Sobo --- src/cursor.coffee | 1 + src/selection.coffee | 2 ++ src/text-editor.coffee | 17 ++++++++++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/cursor.coffee b/src/cursor.coffee index 85573f10e..05242f90a 100644 --- a/src/cursor.coffee +++ b/src/cursor.coffee @@ -26,6 +26,7 @@ class Cursor extends Model destroy: -> @marker.destroy() + @marker = null ### Section: Event Subscription diff --git a/src/selection.coffee b/src/selection.coffee index 8aa86157e..18297e5f7 100644 --- a/src/selection.coffee +++ b/src/selection.coffee @@ -26,6 +26,8 @@ class Selection extends Model destroy: -> @marker.destroy() + @marker = null + @decoration = null isLastSelection: -> this is @editor.getLastSelection() diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 3ee268b95..f3fb7abdb 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -408,16 +408,27 @@ class TextEditor extends Model @emitter.emit 'did-change', {} destroyed: -> + @emitter.emit 'did-destroy' + @emitter = null @disposables.dispose() @displayLayer.destroy() - @disposables.dispose() + @displayLayer = null + @defaultMarkerLayer = null @tokenizedBuffer.destroy() + @tokenizedBuffer = null selection.destroy() for selection in @selections.slice() - @selectionsMarkerLayer.destroy() + @selections = null + @cursors = null + @selectionsMarkerLayer = null @buffer.release() + @buffer = null + @decorationManager = null @languageMode.destroy() + @languageMode = null @gutterContainer.destroy() - @emitter.emit 'did-destroy' + @gutterContainer = null + @editorElement = null + @presenter = null ### Section: Event Subscription