diff options
author | eutarass | 2010-10-23 00:25:54 +0000 |
---|---|---|
committer | eutarass | 2010-10-23 00:25:54 +0000 |
commit | b6ece2fe4a1933694cb5e096cb6b73ae463bbdf3 (patch) | |
tree | eea2561272c279d6c1ab2dbf6b009babe8c0e6f5 /plugins/org.eclipse.tm.tcf.debug.ui | |
parent | 18ef22f5d5fb76aae463ef5c540616e4233cf2c8 (diff) | |
download | org.eclipse.tcf-b6ece2fe4a1933694cb5e096cb6b73ae463bbdf3.tar.gz org.eclipse.tcf-b6ece2fe4a1933694cb5e096cb6b73ae463bbdf3.tar.xz org.eclipse.tcf-b6ece2fe4a1933694cb5e096cb6b73ae463bbdf3.zip |
TCF Debugger: Fixed excessive flashing in Debug view during caused by a bug in implementation of delayed update on resume.
Diffstat (limited to 'plugins/org.eclipse.tm.tcf.debug.ui')
-rw-r--r-- | plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExecContext.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExecContext.java b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExecContext.java index 395b50e13..f9061747f 100644 --- a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExecContext.java +++ b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeExecContext.java @@ -61,6 +61,7 @@ public class TCFNodeExecContext extends TCFNode implements ISymbolOwner { private final Map<String,TCFNodeSymbol> symbols = new HashMap<String,TCFNodeSymbol>(); private int resumed_cnt; + private boolean resume_pending; private static int seq_cnt; @@ -476,11 +477,18 @@ public class TCFNodeExecContext extends TCFNode implements ISymbolOwner { if (!run_context.validate(done)) return false; IRunControl.RunControlContext ctx = run_context.getData(); if (ctx != null && ctx.hasState()) { + if (resume_pending) { + result.setHasChilren(true); + return true; + } if (!state.validate(done)) return false; Throwable state_error = state.getError(); TCFContextState state_data = state.getData(); - result.setHasChilren(state_error == null && state_data != null && state_data.is_suspended); - return true; + if (state_error == null && state_data != null) { + result.setHasChilren(state_data.is_suspended); + return true; + } + children = children_stack; } else { children = children_exec; @@ -649,6 +657,7 @@ public class TCFNodeExecContext extends TCFNode implements ISymbolOwner { void onContextRemoved() { assert !disposed; resumed_cnt++; + resume_pending = false; dispose(); postContextRemovedDelta(); } @@ -700,6 +709,7 @@ public class TCFNodeExecContext extends TCFNode implements ISymbolOwner { address.reset(); signal_mask.reset(); resumed_cnt++; + resume_pending = false; children_stack.onSuspended(); children_regs.onSuspended(); children_exps.onSuspended(); @@ -712,10 +722,12 @@ public class TCFNodeExecContext extends TCFNode implements ISymbolOwner { state.reset(new TCFContextState()); postStateChangedDelta(); final int cnt = ++resumed_cnt; + resume_pending = true; Protocol.invokeLater(250, new Runnable() { public void run() { if (cnt != resumed_cnt) return; if (disposed) return; + resume_pending = false; children_stack.onResumed(); postContentChangedDelta(); TCFNode n = parent; |