diff options
author | Pawel Piech | 2010-01-06 00:38:05 +0000 |
---|---|---|
committer | Pawel Piech | 2010-01-06 00:38:05 +0000 |
commit | c13753ddb3eefb1e3c307b34f1525e29abe8cf0a (patch) | |
tree | 7c6ab2fcd1af5af090f5d60633d69866cd67d9f5 /dsf/org.eclipse.cdt.dsf.ui | |
parent | e31d06b0030d8177aa0b456bbe5f4898e872ee7e (diff) | |
download | org.eclipse.cdt-c13753ddb3eefb1e3c307b34f1525e29abe8cf0a.tar.gz org.eclipse.cdt-c13753ddb3eefb1e3c307b34f1525e29abe8cf0a.tar.xz org.eclipse.cdt-c13753ddb3eefb1e3c307b34f1525e29abe8cf0a.zip |
[298135]- Several calls to DsfSession add/removeServiceEventListener not on executor thread
Diffstat (limited to 'dsf/org.eclipse.cdt.dsf.ui')
2 files changed, 23 insertions, 5 deletions
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/contexts/DsfSuspendTrigger.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/contexts/DsfSuspendTrigger.java index af47331e64b..116cbced995 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/contexts/DsfSuspendTrigger.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/contexts/DsfSuspendTrigger.java @@ -100,9 +100,18 @@ public class DsfSuspendTrigger implements ISuspendTrigger { @ThreadSafe public void dispose() { - if (fEventListenerRegisterd) { - fSession.removeServiceEventListener(this); + try { + fSession.getExecutor().execute(new DsfRunnable() { + public void run() { + if (fEventListenerRegisterd) { + fSession.removeServiceEventListener(this); + } + } + }); + } catch (RejectedExecutionException e) { + // Session already gone. } + fServicesTracker.dispose(); fDisposed = true; } diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/SteppingController.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/SteppingController.java index 6dcb37110c6..14ccb4df44e 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/SteppingController.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/SteppingController.java @@ -16,6 +16,7 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -164,9 +165,17 @@ public final class SteppingController } public void dispose() { - if (fRunControl != null) { - getSession().removeServiceEventListener(this); - } + try { + fSession.getExecutor().execute(new DsfRunnable() { + public void run() { + if (fRunControl != null) { + getSession().removeServiceEventListener(this); + } + } + }); + } catch (RejectedExecutionException e) { + // Session already gone. + } IPreferenceStore store= DsfUIPlugin.getDefault().getPreferenceStore(); store.removePropertyChangeListener(fPreferencesListener); |