From 91c51e5113f7a97bf6a55372b2a368cff92c889b Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Fri, 11 Mar 2011 08:34:25 +0000 Subject: [PATCH] Disassembly view should blank out if there is no debug context, related to bug 337376 --- .../ui/disassembly/DisassemblyPart.java | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java index d340388fce6..97e089cbaa7 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java @@ -1847,43 +1847,46 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem protected void updateDebugContext() { IAdaptable context = DebugUITools.getPartDebugContext(getSite()); + IDisassemblyBackend prevBackend = fBackend; + IDisassemblyBackend newBackend = null; + fDebugSessionId = null; + boolean needUpdate = false; if (context != null) { - final IDisassemblyBackend prevBackend = fBackend; - fDebugSessionId = null; - boolean needUpdate = false; - if (prevBackend == null || !prevBackend.supportsDebugContext(context)) { + if (prevBackend != null && prevBackend.supportsDebugContext(context)) { + newBackend = prevBackend; + } else { needUpdate = true; - fBackend = (IDisassemblyBackend)context.getAdapter(IDisassemblyBackend.class); - if (fBackend != null) { - if (fBackend.supportsDebugContext(context)) { - fBackend.init(this); + newBackend = (IDisassemblyBackend)context.getAdapter(IDisassemblyBackend.class); + if (newBackend != null) { + if (newBackend.supportsDebugContext(context)) { + newBackend.init(this); } else { - fBackend = null; + newBackend = null; } } } - - if (fBackend != null) { - IDisassemblyBackend.SetDebugContextResult result = fBackend.setDebugContext(context); - if (result != null) { - fDebugSessionId = result.sessionId; - if (result.contextChanged) { - needUpdate = true; - } + } + fBackend = newBackend; + if (newBackend != null) { + IDisassemblyBackend.SetDebugContextResult result = newBackend.setDebugContext(context); + if (result != null) { + fDebugSessionId = result.sessionId; + if (result.contextChanged) { + needUpdate = true; } } - if (prevBackend != null && fBackend != prevBackend) { - needUpdate = true; - prevBackend.clearDebugContext(); - prevBackend.dispose(); - } - if (needUpdate && fViewer != null) { - startUpdate(new Runnable() { - public void run() { - debugContextChanged(); - } - }); - } + } + if (prevBackend != null && newBackend != prevBackend) { + needUpdate = true; + prevBackend.clearDebugContext(); + prevBackend.dispose(); + } + if (needUpdate && fViewer != null) { + startUpdate(new Runnable() { + public void run() { + debugContextChanged(); + } + }); } }