From 2d6e2993471e9f25f161ab16d1851c256ed90f9b Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Fri, 5 Nov 2010 13:24:01 +0000 Subject: [PATCH] Bug 325394 - follow-up fix --- .../ui/sourcelookup/DsfSourceDisplayAdapter.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 9e928b8abdc..33976f31e08 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 @@ -741,6 +741,19 @@ public class DsfSourceDisplayAdapter implements ISourceDisplay, ISteppingControl // If there is a previous lookup job running, cancel it. if (fRunningLookupJob != null) { fRunningLookupJob.cancel(); + if (!eventTriggered && frameData.isIdentical(fRunningLookupJob.fFrameData)) { + // identical location - we are done + return; + } + // cancel running lookup job + fRunningLookupJob.cancel(); + // make sure doneStepping() is called even if the job never ran - bug 325394 + if (fRunningLookupJob.fEventTriggered) { + // ... but not if this request is event-triggered for the same context (duplicate suspended event) + if (!eventTriggered || !fRunningLookupJob.getDmc().equals(frameData.fDmc)) { + doneStepping(fRunningLookupJob.getDmc()); + } + } } fRunningLookupJob = new LookupJob(frameData, page, eventTriggered);