diff options
author | Darin Wright | 2006-07-12 14:24:25 +0000 |
---|---|---|
committer | Darin Wright | 2006-07-12 14:24:25 +0000 |
commit | cbe02639b2eef297e5ef067fdfce51f758e9741f (patch) | |
tree | 41d8b7eaaa8ebe5d83b1839f758aacb5e58112ee /org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements | |
parent | 6fa5eebf06a109dc437382a68c31639670800304 (diff) | |
download | eclipse.platform.debug-cbe02639b2eef297e5ef067fdfce51f758e9741f.tar.gz eclipse.platform.debug-cbe02639b2eef297e5ef067fdfce51f758e9741f.tar.xz eclipse.platform.debug-cbe02639b2eef297e5ef067fdfce51f758e9741f.zip |
Bug 148995 Deadlock while stepping
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameSourceDisplayAdapter.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameSourceDisplayAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameSourceDisplayAdapter.java index 2181d1fb5..1480e2f5e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameSourceDisplayAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameSourceDisplayAdapter.java @@ -138,18 +138,25 @@ public class StackFrameSourceDisplayAdapter implements ISourceDisplayAdapter { /* (non-Javadoc) * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor) */ - public synchronized IStatus runInUIThread(IProgressMonitor monitor) { - if (!monitor.isCanceled() && fResult != null && fPage != null) { - DebugUITools.displaySource(fResult, fPage); + public IStatus runInUIThread(IProgressMonitor monitor) { + ISourceLookupResult result = null; + IWorkbenchPage page = null; + synchronized (this) { + result = fResult; + page = fPage; + setDisplayInfo(null, null); + } + if (!monitor.isCanceled() && result != null && page != null) { + DebugUITools.displaySource(result, page); // termination may have occurred while displaying source if (monitor.isCanceled()) { - Object artifact = fResult.getArtifact(); + Object artifact = result.getArtifact(); if (artifact instanceof IStackFrame) { clearSourceSelection(((IStackFrame)artifact).getThread()); } } } - setDisplayInfo(null, null); + return Status.OK_STATUS; } |