1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug 399281 - MulticoreVisualizer: disposeVisualizer() is not getting

called when visualizer view is closed

Change-Id: Ibd80373986af0fdedde42146862f89cdcded7099
Reviewed-on: https://git.eclipse.org/r/10113
Reviewed-by: William Swanson <traveler@tilera.com>
IP-Clean: William Swanson <traveler@tilera.com>
Tested-by: William Swanson <traveler@tilera.com>
This commit is contained in:
Marc Dumais 2013-02-06 10:43:34 -05:00 committed by William Swanson
parent ffe8836c1b
commit 0d41eeea6c
4 changed files with 31 additions and 9 deletions

View file

@ -8,6 +8,7 @@
* Contributors: * Contributors:
* William R. Swanson (Tilera Corporation) - initial API and implementation * William R. Swanson (Tilera Corporation) - initial API and implementation
* IBM Corporation * IBM Corporation
* Marc Dumais (Ericsson) - Bug 399281
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.view; package org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.view;
@ -705,10 +706,11 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer
protected void setCanvasModel(VisualizerModel model) { protected void setCanvasModel(VisualizerModel model) {
final VisualizerModel model_f = model; final VisualizerModel model_f = model;
GUIUtils.exec(new Runnable() { @Override public void run() { GUIUtils.exec(new Runnable() { @Override public void run() {
m_canvas.setModel(model_f); if(m_canvas != null) {
m_canvas.setModel(model_f);
// Update the canvas's selection from the current workbench selection. // Update the canvas's selection from the current workbench selection.
updateCanvasSelectionInternal(); updateCanvasSelectionInternal();
}
}}); }});
} }

View file

@ -11,6 +11,7 @@
* Marc Dumais (Ericsson) - Bug 396184 * Marc Dumais (Ericsson) - Bug 396184
* Marc Dumais (Ericsson) - Bug 396200 * Marc Dumais (Ericsson) - Bug 396200
* Marc Dumais (Ericsson) - Bug 396293 * Marc Dumais (Ericsson) - Bug 396293
* Marc Dumais (Ericsson) - Bug 399281
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.view; package org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.view;
@ -303,7 +304,9 @@ public class MulticoreVisualizerCanvas extends GraphicCanvas
*/ */
public void requestUpdate() { public void requestUpdate() {
GUIUtils.exec(new Runnable() { @Override public void run() { GUIUtils.exec(new Runnable() { @Override public void run() {
m_updateTimer.start(); if (m_updateTimer != null) {
m_updateTimer.start();
}
}}); }});
} }
@ -867,7 +870,9 @@ public class MulticoreVisualizerCanvas extends GraphicCanvas
/** Removes external listener for selection change events. */ /** Removes external listener for selection change events. */
@Override @Override
public void removeSelectionChangedListener(ISelectionChangedListener listener) { public void removeSelectionChangedListener(ISelectionChangedListener listener) {
m_selectionManager.removeSelectionChangedListener(listener); if (m_selectionManager != null) {
m_selectionManager.removeSelectionChangedListener(listener);
}
} }
/** Raises selection changed event. */ /** Raises selection changed event. */

View file

@ -7,6 +7,7 @@
* *
* Contributors: * Contributors:
* William R. Swanson (Tilera Corporation) * William R. Swanson (Tilera Corporation)
* Marc Dumais (Ericsson) - Bug 399281
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.visualizer.ui; package org.eclipse.cdt.visualizer.ui;
@ -29,6 +30,8 @@ import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.MenuDetectEvent; import org.eclipse.swt.events.MenuDetectEvent;
import org.eclipse.swt.events.MenuDetectListener; import org.eclipse.swt.events.MenuDetectListener;
import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintEvent;
@ -97,6 +100,13 @@ public class VisualizerViewer extends PageBook
public VisualizerViewer(VisualizerView view, Composite parent) { public VisualizerViewer(VisualizerView view, Composite parent) {
super(parent, SWT.NONE); super(parent, SWT.NONE);
initVisualizerViewer(view, parent); initVisualizerViewer(view, parent);
// so we're notified when the widget is disposed
addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
dispose();
}
});
} }
/** Dispose method. */ /** Dispose method. */
@ -431,7 +441,9 @@ public class VisualizerViewer extends PageBook
/** Removes external listener for selection change events. */ /** Removes external listener for selection change events. */
public void removeSelectionChangedListener(ISelectionChangedListener listener) { public void removeSelectionChangedListener(ISelectionChangedListener listener) {
m_selectionManager.removeSelectionChangedListener(listener); if(m_selectionManager != null) {
m_selectionManager.removeSelectionChangedListener(listener);
}
} }
/** Raises selection changed event. */ /** Raises selection changed event. */

View file

@ -7,6 +7,7 @@
* *
* Contributors: * Contributors:
* William R. Swanson (Tilera Corporation) * William R. Swanson (Tilera Corporation)
* Marc Dumais (Ericsson) - Bug 399281
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.visualizer.ui.canvas; package org.eclipse.cdt.visualizer.ui.canvas;
@ -68,8 +69,10 @@ public class BufferedCanvas extends Canvas
/** Cleans up control. */ /** Cleans up control. */
protected void cleanupBufferedCanvas() { protected void cleanupBufferedCanvas() {
removePaintListener(this); if(!this.isDisposed()) {
removeControlListener(this); removePaintListener(this);
removeControlListener(this);
}
if (m_doubleBuffer != null) { if (m_doubleBuffer != null) {
m_doubleBuffer.dispose(); m_doubleBuffer.dispose();
m_doubleBuffer = null; m_doubleBuffer = null;