From 26af0a81892cd0635cce25bc478e5de3e4cc18f6 Mon Sep 17 00:00:00 2001 From: "William R. Swanson" Date: Wed, 7 Mar 2012 10:49:00 -0500 Subject: [PATCH] Bug 373376: remove Debug View listener in visualizer's dispose method --- .../internal/ui/view/MulticoreVisualizer.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java index 0a242f6bc5d..bf60dc6eb54 100755 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java @@ -102,6 +102,9 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer /** Cached reference to Debug View viewer. */ protected TreeModelViewer m_debugViewer = null; + /** Model changed listener, attached to Debug View. */ + protected IModelChangedListener m_modelChangedListener = null; + // --- UI members --- @@ -151,6 +154,7 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer public void dispose() { super.dispose(); + removeDebugViewerListener(); disposeActions(); } @@ -478,7 +482,13 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer * Debug View updates (which it doesn't bother to properly * communicate to the rest of the world, sigh). */ - public void updateDebugViewListener() + protected void updateDebugViewListener() + { + attachDebugViewerListener(); + } + + /** Attaches debug viewer listener. */ + protected void attachDebugViewerListener() { // NOTE: debug viewer might not exist yet, so we // attach the listener at the first opportunity to do so. @@ -500,6 +510,18 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer } } } + + /** Removes debug viewer listener. */ + protected void removeDebugViewerListener() + { + if (m_modelChangedListener != null) { + if (m_debugViewer != null) { + m_debugViewer.removeModelChangedListener(m_modelChangedListener); + m_debugViewer = null; + m_modelChangedListener = null; + } + } + } /** * Invoked by VisualizerViewer when workbench selection changes.