Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancois Chouinard2010-10-13 21:33:43 +0000
committerFrancois Chouinard2010-10-13 21:33:43 +0000
commit3e32b2b27763c942a2912ee715f093091daba0a3 (patch)
treee7bc95f4a6aaf2730e9e5f0b80847c7e4e42d8d5
parent3aad80192371e593dce4d938036c1d7ecd58ae5f (diff)
downloadorg.eclipse.linuxtools-3e32b2b27763c942a2912ee715f093091daba0a3.tar.gz
org.eclipse.linuxtools-3e32b2b27763c942a2912ee715f093091daba0a3.tar.xz
org.eclipse.linuxtools-3e32b2b27763c942a2912ee715f093091daba0a3.zip
2010-10-13 Francois Chouinard <fchouinard@gmail.com> Fix for Bug327711
* src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java: Added checks for disposed widget * src/org/eclipse/linuxtools/lttng/ui/views/controlflow/ControlFlowView.java: Added checks for disposed widget * src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramCanvas.java : Added checks for disposed widget * src/org/eclipse/linuxtools/lttng/ui/views/histogram/ParentHistogramCanvas.java: Added checks for disposed widget * src/org/eclipse/linuxtools/lttng/ui/views/histogram/TimeTextGroup.java: Added checks for disposed widget * src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java: Added checks for disposed widget * src/org/eclipse/linuxtools/lttng/ui/views/resources/ResourcesView.java: Added checks for disposed widget * src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java: Added checks for disposed widget * src/org/eclipse/linuxtools/lttng/ui/views/timeframe/SpinnerGroup.java: Added checks for disposed widget * src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java: Added checks for disposed widget * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Added checks for disposed widget * src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java: Added checks for disposed widget * src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java: Added checks for disposed widget
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/ChangeLog10
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java12
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/controlflow/ControlFlowView.java57
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramCanvas.java12
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/ParentHistogramCanvas.java6
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/TimeTextGroup.java22
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java2
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/resources/ResourcesView.java18
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java25
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/SpinnerGroup.java4
-rw-r--r--lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java3
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/ChangeLog1
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java11
-rw-r--r--lttng/org.eclipse.linuxtools.tmf/ChangeLog2
-rw-r--r--lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java2
-rw-r--r--lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java5
16 files changed, 128 insertions, 64 deletions
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/ChangeLog b/lttng/org.eclipse.linuxtools.lttng.ui/ChangeLog
index fbf94a6224..1532d63af1 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/ChangeLog
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/ChangeLog
@@ -1,5 +1,15 @@
2010-10-13 Francois Chouinard <fchouinard@gmail.com>
+ * src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java: Added checks for disposed widget
+ * src/org/eclipse/linuxtools/lttng/ui/views/controlflow/ControlFlowView.java: Added checks for disposed widget
+ * src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramCanvas.java : Added checks for disposed widget
+ * src/org/eclipse/linuxtools/lttng/ui/views/histogram/ParentHistogramCanvas.java: Added checks for disposed widget
+ * src/org/eclipse/linuxtools/lttng/ui/views/histogram/TimeTextGroup.java: Added checks for disposed widget
+ * src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java: Added checks for disposed widget
+ * src/org/eclipse/linuxtools/lttng/ui/views/resources/ResourcesView.java: Added checks for disposed widget
+ * src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java: Added checks for disposed widget
+ * src/org/eclipse/linuxtools/lttng/ui/views/timeframe/SpinnerGroup.java: Added checks for disposed widget
+ * src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java: Added checks for disposed widget
* .options: TraceDebug options file
* src/org/eclipse/linuxtools/lttng/ui/LTTngUiPlugin.java (stop): Closes the trace log file
* src/org/eclipse/linuxtools/lttng/ui/model/trange/TimeRangeComponent.java (toString): Added
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java
index ba4f1eedbe..82340348cc 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java
@@ -480,13 +480,15 @@ public abstract class AbsTimeUpdateView extends TmfView implements IRequestStatu
* @param waitInd
*/
protected void waitCursor(final boolean waitInd) {
- if (tsfviewer != null) {
+ if ((tsfviewer != null) && (!tsfviewer.getControl().isDisposed())) {
Display display = tsfviewer.getControl().getDisplay();
// Perform the updates on the UI thread
display.asyncExec(new Runnable() {
public void run() {
- tsfviewer.waitCursor(waitInd);
+ if ((tsfviewer != null) && (!tsfviewer.getControl().isDisposed())) {
+ tsfviewer.waitCursor(waitInd);
+ }
}
});
}
@@ -596,14 +598,16 @@ public abstract class AbsTimeUpdateView extends TmfView implements IRequestStatu
if (complete) {
// reselect to original time
ParamsUpdater paramUpdater = getParamsUpdater();
- if (paramUpdater != null && tsfviewer != null) {
+ if ((paramUpdater != null) && (tsfviewer != null) && (!tsfviewer.getControl().isDisposed())) {
final Long selTime = paramUpdater.getSelectedTime();
if (selTime != null) {
TraceDebug.debug("View: " + getName() + "\n\t\tRestoring the selected time to: " + selTime);
Display display = tsfviewer.getControl().getDisplay();
display.asyncExec(new Runnable() {
public void run() {
- tsfviewer.setSelectedTime(selTime, false, this);
+ if ((tsfviewer != null) && (!tsfviewer.getControl().isDisposed())) {
+ tsfviewer.setSelectedTime(selTime, false, this);
+ }
}
});
}
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/controlflow/ControlFlowView.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/controlflow/ControlFlowView.java
index 8134f77908..631fa6944c 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/controlflow/ControlFlowView.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/controlflow/ControlFlowView.java
@@ -889,36 +889,41 @@ public class ControlFlowView extends AbsTimeUpdateView implements
if(tableViewer != null) {
final Table table = tableViewer.getTable();
+
+ // Ignore update if widget is disposed
+ if (table.isDisposed()) return;
+
Display display = table.getDisplay();
-
+
// Perform the updates on the UI thread)
display.asyncExec(new Runnable() {
public void run() {
-
- tableViewer.setInput(items); // This shall be the minimal
- // initial
- tableFilter = new ViewProcessFilter(tableViewer);
- tableViewer.setFilters(new ViewerFilter[] { tableFilter });
-
- resizeTableColumns(table);
- table.update();
- tableViewer.refresh();
-
- tsfviewer.display(items, startBoundTime, endBoundTime,
- updateTimeBounds);
-
- // validate visible boundaries
- if (startVisibleWindow > -1 && endVisibleWindow > -1) {
- tsfviewer.setSelectVisTimeWindow(startVisibleWindow,
- endVisibleWindow, source);
- }
-
- tsfviewer.resizeControls();
-
- // Adjust the size of the vertical scroll bar to fit the
- // contents
- if (scrollFrame != null) {
- updateScrolls(scrollFrame);
+ if (!table.isDisposed()) {
+ tableViewer.setInput(items); // This shall be the minimal
+ // initial
+ tableFilter = new ViewProcessFilter(tableViewer);
+ tableViewer.setFilters(new ViewerFilter[] { tableFilter });
+
+ resizeTableColumns(table);
+ table.update();
+ tableViewer.refresh();
+
+ tsfviewer.display(items, startBoundTime, endBoundTime,
+ updateTimeBounds);
+
+ // validate visible boundaries
+ if (startVisibleWindow > -1 && endVisibleWindow > -1) {
+ tsfviewer.setSelectVisTimeWindow(startVisibleWindow,
+ endVisibleWindow, source);
+ }
+
+ tsfviewer.resizeControls();
+
+ // Adjust the size of the vertical scroll bar to fit the
+ // contents
+ if (scrollFrame != null) {
+ updateScrolls(scrollFrame);
+ }
}
}
});
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramCanvas.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramCanvas.java
index 64aadd5a37..69922cd69e 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramCanvas.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramCanvas.java
@@ -403,11 +403,13 @@ class AsyncCanvasRedrawer {
*
*/
public void asynchronousRedraw() {
- if (parentCanvas != null) {
+ if ((parentCanvas != null) && (!parentCanvas.isDisposed())) {
Display display = parentCanvas.getDisplay();
display.asyncExec(new Runnable() {
public void run() {
- parentCanvas.redraw();
+ if ((parentCanvas != null) && (!parentCanvas.isDisposed())) {
+ parentCanvas.redraw();
+ }
}
});
}
@@ -440,11 +442,13 @@ class AsyncCanvasRedrawer {
*
*/
public void asynchronousNotifyParentUpdatedInformation() {
- if(parentCanvas != null) {
+ if((parentCanvas != null) && (!parentCanvas.isDisposed())) {
Display display = parentCanvas.getDisplay();
display.asyncExec(new Runnable() {
public void run() {
- parentCanvas.notifyParentUpdatedInformation();
+ if((parentCanvas != null) && (!parentCanvas.isDisposed())) {
+ parentCanvas.notifyParentUpdatedInformation();
+ }
}
});
}
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/ParentHistogramCanvas.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/ParentHistogramCanvas.java
index 30c71cd9b0..31f7ba0ff4 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/ParentHistogramCanvas.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/ParentHistogramCanvas.java
@@ -470,10 +470,14 @@ public class ParentHistogramCanvas extends HistogramCanvas {
*
*/
public void asynchronousNotifyParentSelectionWindowChanged() {
+ // Ignore update if widget is disposed
+ if (this.isDisposed()) return;
+
Display display = this.getDisplay();
display.asyncExec(new Runnable() {
public void run() {
- notifyParentSelectionWindowChanged();
+ if(!ParentHistogramCanvas.this.isDisposed())
+ notifyParentSelectionWindowChanged();
}
});
}
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/TimeTextGroup.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/TimeTextGroup.java
index 543cc7b7f0..b2d8fefb88 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/TimeTextGroup.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/TimeTextGroup.java
@@ -436,12 +436,17 @@ class AsyncTimeTextGroupRedrawer {
* @param newTime The new time to set
*/
public void asynchronousSetValue(long newTime) {
+ // Ignore setting of value if widget is disposed
+ if (parentTimeTextGroup.getParent().isDisposed()) return;
+
final long tmpTime = newTime;
Display display = parentTimeTextGroup.getParent().getDisplay();
display.asyncExec(new Runnable() {
public void run() {
- parentTimeTextGroup.setValue(tmpTime);
+ if (!parentTimeTextGroup.getParent().isDisposed()) {
+ parentTimeTextGroup.setValue(tmpTime);
+ }
}
});
}
@@ -454,12 +459,16 @@ class AsyncTimeTextGroupRedrawer {
* @param newGroupName The new group name to set
*/
public void asynchronousSetGroupName(String newGroupName) {
+ // Ignore setting of name if widget is disposed
+ if (parentTimeTextGroup.getParent().isDisposed()) return;
+
final String tmpName = newGroupName;
-
Display display = parentTimeTextGroup.getParent().getDisplay();
display.asyncExec(new Runnable() {
public void run() {
- parentTimeTextGroup.setGroupName(tmpName);
+ if (!parentTimeTextGroup.getParent().isDisposed()) {
+ parentTimeTextGroup.setGroupName(tmpName);
+ }
}
});
}
@@ -471,10 +480,15 @@ class AsyncTimeTextGroupRedrawer {
*
*/
public void asynchronousRedraw() {
+ // Ignore redraw if widget is disposed
+ if (parentTimeTextGroup.getParent().isDisposed()) return;
+
Display display = parentTimeTextGroup.getParent().getDisplay();
display.asyncExec(new Runnable() {
public void run() {
- parentTimeTextGroup.getParent().redraw();
+ if (!parentTimeTextGroup.getParent().isDisposed()) {
+ parentTimeTextGroup.getParent().redraw();
+ }
}
});
}
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java
index bd559bc8cd..5751cb2cc8 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java
@@ -72,7 +72,7 @@ public class ProjectView extends TmfView {
// Perform updates on the UI thread
private Runnable fViewRefresher = new Runnable() {
public void run() {
- if (fViewer != null) {
+ if ((fViewer != null) && (!fViewer.getTree().isDisposed())) {
Object[] elements = fViewer.getExpandedElements();
fViewer.refresh();
fViewer.setExpandedElements(elements);
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/resources/ResourcesView.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/resources/ResourcesView.java
index 1a93bef79b..5cd34ebaf3 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/resources/ResourcesView.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/resources/ResourcesView.java
@@ -440,17 +440,21 @@ public class ResourcesView extends AbsTimeUpdateView implements
public void displayModel(final ITmfTimeAnalysisEntry[] items, final long startBoundTime,
final long endBoundTime, final boolean updateTimeBounds, final long startVisibleWindow,
final long endVisibleWindow, final Object source) {
-
+
+ // Return if disposed
+ if ((tsfviewer == null) || (tsfviewer.getControl().isDisposed())) return;
+
Display display = tsfviewer.getControl().getDisplay();
display.asyncExec(new Runnable() {
-
public void run() {
- tsfviewer.display(items, startBoundTime, endBoundTime, updateTimeBounds);
- // validate visible boundaries
- if (startVisibleWindow > -1 && endVisibleWindow > -1) {
- tsfviewer.setSelectVisTimeWindow(startVisibleWindow, endVisibleWindow, source);
+ if ((tsfviewer != null) && (!tsfviewer.getControl().isDisposed())) {
+ tsfviewer.display(items, startBoundTime, endBoundTime, updateTimeBounds);
+ // validate visible boundaries
+ if (startVisibleWindow > -1 && endVisibleWindow > -1) {
+ tsfviewer.setSelectVisTimeWindow(startVisibleWindow, endVisibleWindow, source);
+ }
+ tsfviewer.resizeControls();
}
- tsfviewer.resizeControls();
}
});
}
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java
index 6f4aff6508..99787b18e4 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java
@@ -493,7 +493,7 @@ public class StatisticsView extends AbsTimeUpdateView {
*/
@Override
protected void waitCursor(final boolean waitInd) {
- if (treeViewer == null) {
+ if ((treeViewer == null) || (treeViewer.getTree().isDisposed())) {
return;
}
@@ -505,11 +505,13 @@ public class StatisticsView extends AbsTimeUpdateView {
// Perform the updates on the UI thread
display.asyncExec(new Runnable() {
public void run() {
- Cursor cursor = null; /* indicates default */
- if (waitInd) {
- cursor = fwaitCursor;
+ if ((treeViewer != null) && (!treeViewer.getTree().isDisposed())) {
+ Cursor cursor = null; /* indicates default */
+ if (waitInd) {
+ cursor = fwaitCursor;
+ }
+ treeViewer.getControl().setCursor(cursor);
}
- treeViewer.getControl().setCursor(cursor);
}
});
}
@@ -517,12 +519,13 @@ public class StatisticsView extends AbsTimeUpdateView {
@Override
public void ModelUpdatePrep(TmfTimeRange timeRange, boolean clearAllData) {
Object input = treeViewer.getInput();
- if (input != null && input instanceof StatisticsTreeNode) {
+ if ((input != null) && (input instanceof StatisticsTreeNode) && (!treeViewer.getTree().isDisposed())) {
((StatisticsTreeNode) input).reset();
treeViewer.getTree().getDisplay().asyncExec(new Runnable() {
// @Override
public void run() {
- treeViewer.refresh();
+ if (!treeViewer.getTree().isDisposed())
+ treeViewer.refresh();
}
});
}
@@ -530,13 +533,17 @@ public class StatisticsView extends AbsTimeUpdateView {
@Override
public void modelInputChanged(ILttngSyntEventRequest request, boolean complete) {
+ // Ignore update if disposed
+ if (treeViewer.getTree().isDisposed()) return;
+
treeViewer.getTree().getDisplay().asyncExec(new Runnable() {
// @Override
public void run() {
- treeViewer.refresh();
+ if (!treeViewer.getTree().isDisposed())
+ treeViewer.refresh();
}
});
- }
+ }
/*
* (non-Javadoc)
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/SpinnerGroup.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/SpinnerGroup.java
index be2a5e7622..167cecd421 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/SpinnerGroup.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/SpinnerGroup.java
@@ -275,7 +275,9 @@ public class SpinnerGroup {
* Perform the update on the UI thread
*/
public void updateSpinners() {
-
+ // Ignore update if disposed
+ if (seconds.isDisposed()) return;
+
seconds.getDisplay().asyncExec(new Runnable() {
public void run() {
if (!seconds.isDisposed() && !nanosec.isDisposed()) {
diff --git a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java
index dd234847e1..90e3c1f407 100644
--- a/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java
+++ b/lttng/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java
@@ -239,6 +239,9 @@ public class TimeFrameView extends TmfView {
*/
private void updateSlider(TmfTimeRange range, TmfTimestamp timestamp) {
+ // Ignore update if disposed
+ if (fSlider.isDisposed()) return;
+
// Determine the new relative position
byte scale = range.getEndTime().getScale();
long total = range.getStartTime().getAdjustment(range.getEndTime(), scale);
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/ChangeLog b/lttng/org.eclipse.linuxtools.tmf.ui/ChangeLog
index c37134c010..2affacd40a 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/ChangeLog
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/ChangeLog
@@ -1,5 +1,6 @@
2010-10-13 Francois Chouinard <fchouinard@gmail.com>
+ * src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java: Added checks for disposed widget
* src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java: Fixed comments
2010-09-17 Francois Chouinard <fchouinard@gmail.com>
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java
index 5741ebc4b9..fded4c7039 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java
@@ -271,7 +271,7 @@ public class TmfEventsTable extends TmfComponent {
@TmfSignalHandler
public void experimentUpdated(TmfExperimentUpdatedSignal signal) {
- if (signal.getExperiment() != fTrace) return;
+ if ((signal.getExperiment() != fTrace) || fTable.isDisposed()) return;
// Perform the refresh on the UI thread
fTable.getDisplay().asyncExec(new Runnable() {
public void run() {
@@ -285,7 +285,7 @@ public class TmfEventsTable extends TmfComponent {
@TmfSignalHandler
public void traceUpdated(TmfTraceUpdatedSignal signal) {
- if (signal.getTrace() != fTrace) return;
+ if ((signal.getTrace() != fTrace ) || fTable.isDisposed()) return;
// Perform the refresh on the UI thread
fTable.getDisplay().asyncExec(new Runnable() {
public void run() {
@@ -301,7 +301,7 @@ public class TmfEventsTable extends TmfComponent {
private boolean fRefreshPending = false;
@TmfSignalHandler
public synchronized void rangeSynched(TmfRangeSynchSignal signal) {
- if (!fRefreshPending) {
+ if (!fRefreshPending && !fTable.isDisposed()) {
// Perform the refresh on the UI thread
fRefreshPending = true;
fTable.getDisplay().asyncExec(new Runnable() {
@@ -317,7 +317,7 @@ public class TmfEventsTable extends TmfComponent {
@TmfSignalHandler
public void currentTimeUpdated(final TmfTimeSynchSignal signal) {
- if (signal.getSource() != fTable && fTrace != null) {
+ if (signal.getSource() != fTable && fTrace != null && !fTable.isDisposed()) {
Job job = new Job("seeking...") {
@Override
protected IStatus run(IProgressMonitor monitor) {
@@ -325,6 +325,9 @@ public class TmfEventsTable extends TmfComponent {
// Perform the updates on the UI thread
fTable.getDisplay().asyncExec(new Runnable() {
public void run() {
+ // Return if table is disposed
+ if (fTable.isDisposed()) return;
+
fTable.setSelection(index);
// The timestamp might not correspond to an actual event
// and the selection will point to the next experiment event.
diff --git a/lttng/org.eclipse.linuxtools.tmf/ChangeLog b/lttng/org.eclipse.linuxtools.tmf/ChangeLog
index abe529b7a3..223bbe1e7f 100644
--- a/lttng/org.eclipse.linuxtools.tmf/ChangeLog
+++ b/lttng/org.eclipse.linuxtools.tmf/ChangeLog
@@ -1,5 +1,7 @@
2010-10-13 Francois Chouinard <fchouinard@gmail.com>
+ * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Added checks for disposed widget
+ * src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java: Added checks for disposed widget
* src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Fixed comments
* src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java: Added waitForStart() API
* src/org/eclipse/linuxtools/tmf/event/TmfEventContent.java: Added setEvent()
diff --git a/lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java b/lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java
index 74899f2c31..d9dff18c31 100644
--- a/lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java
+++ b/lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java
@@ -148,7 +148,7 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
* Clears the experiment
*/
@Override
- public void dispose() {
+ public synchronized void dispose() {
if (fTraces != null) {
for (ITmfTrace trace : fTraces) {
trace.dispose();
diff --git a/lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java b/lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java
index d6245819ca..91a9318f04 100644
--- a/lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java
+++ b/lttng/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java
@@ -67,7 +67,7 @@ public class TmfRequestExecutor implements Executor {
/**
* @return the shutdown state (i.e. if it is accepting new requests)
*/
- public boolean isShutdown() {
+ public synchronized boolean isShutdown() {
return fExecutor.isShutdown();
}
@@ -115,7 +115,8 @@ public class TmfRequestExecutor implements Executor {
*/
protected synchronized void scheduleNext() {
if ((fCurrentRequest = fRequestQueue.poll()) != null) {
- fExecutor.execute(fCurrentRequest);
+ if (!fExecutor.isShutdown())
+ fExecutor.execute(fCurrentRequest);
}
}

Back to the top