diff options
author | Anton Leherbauer | 2010-09-28 10:15:21 +0000 |
---|---|---|
committer | Anton Leherbauer | 2010-09-28 10:15:21 +0000 |
commit | cc2fc91b90f14593e72da1e1c688454249f08797 (patch) | |
tree | 9c35f4150419202928d5d801409949482ef698e4 /dsf/org.eclipse.cdt.dsf.ui | |
parent | 62104189e03fe0351f32aacdef34af16c0f924fc (diff) | |
download | org.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.java | 9 |
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() { |