Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPawel Piech2010-01-06 00:38:05 +0000
committerPawel Piech2010-01-06 00:38:05 +0000
commitc13753ddb3eefb1e3c307b34f1525e29abe8cf0a (patch)
tree7c6ab2fcd1af5af090f5d60633d69866cd67d9f5 /dsf/org.eclipse.cdt.dsf.ui
parente31d06b0030d8177aa0b456bbe5f4898e872ee7e (diff)
downloadorg.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')
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/contexts/DsfSuspendTrigger.java13
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/SteppingController.java15
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);

Back to the top