Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Leherbauer2010-09-28 10:15:21 +0000
committerAnton Leherbauer2010-09-28 10:15:21 +0000
commitcc2fc91b90f14593e72da1e1c688454249f08797 (patch)
tree9c35f4150419202928d5d801409949482ef698e4 /dsf/org.eclipse.cdt.dsf.ui
parent62104189e03fe0351f32aacdef34af16c0f924fc (diff)
downloadorg.eclipse.cdt-cc2fc91b90f14593e72da1e1c688454249f08797.tar.gz
org.eclipse.cdt-cc2fc91b90f14593e72da1e1c688454249f08797.tar.xz
org.eclipse.cdt-cc2fc91b90f14593e72da1e1c688454249f08797.zip
Bug 325394 - some times the user cannot step for 5 seconds during fast stepping
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/sourcelookup/DsfSourceDisplayAdapter.java9
1 files changed, 9 insertions, 0 deletions
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java
index 3b910f90735..9e928b8abdc 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java
@@ -686,6 +686,7 @@ public class DsfSourceDisplayAdapter implements ISourceDisplay, ISteppingControl
}
private void doDisplaySource(final IFrameDMContext context, final IWorkbenchPage page, final boolean force, final boolean eventTriggered) {
+ if (DEBUG) System.out.println("[DsfSourceDisplayAdapter] doDisplaySource ctx="+context+" eventTriggered="+eventTriggered); //$NON-NLS-1$ //$NON-NLS-2$
if (context.getLevel() < 0) {
return;
}
@@ -760,6 +761,13 @@ public class DsfSourceDisplayAdapter implements ISourceDisplay, ISteppingControl
}
// cancel running display job
fRunningDisplayJob.cancel();
+ // make sure doneStepping() is called even if the job never ran - bug 325394
+ if (fRunningDisplayJob.fEventTriggered && !fRunningDisplayJob.fDoneStepping.getAndSet(true)) {
+ // ... but not if this request is event-triggered for the same context (duplicate suspended event)
+ if (!eventTriggered || !fRunningDisplayJob.getDmc().equals(lookupResult.getDmc())) {
+ doneStepping(fRunningDisplayJob.getDmc());
+ }
+ }
}
if (fRunningClearingJob != null) {
// Wait for the clearing job to finish, instead, set the
@@ -855,6 +863,7 @@ public class DsfSourceDisplayAdapter implements ISourceDisplay, ISteppingControl
public void eventDispatched(final IRunControl.ISuspendedDMEvent e) {
updateStepTiming();
if (e.getReason() == StateChangeReason.STEP || e.getReason() == StateChangeReason.BREAKPOINT) {
+ if (DEBUG) System.out.println("[DsfSourceDisplayAdapter] eventDispatched e="+e); //$NON-NLS-1$
// trigger source display immediately (should be optional?)
Display.getDefault().asyncExec(new Runnable() {
public void run() {

Back to the top