diff options
author | Deep Amin | 2020-08-06 17:10:06 +0000 |
---|---|---|
committer | Deep Amin | 2020-08-10 17:38:56 +0000 |
commit | 874e85b2b45b238404d6b8e11b80fda8a3425677 (patch) | |
tree | 977d67943d579addb3c066375189bbe3a998844c | |
parent | 375b307466a51ee87ea47540f74890535c46a3ce (diff) | |
download | org.eclipse.tcf-874e85b2b45b238404d6b8e11b80fda8a3425677.tar.gz org.eclipse.tcf-874e85b2b45b238404d6b8e11b80fda8a3425677.tar.xz org.eclipse.tcf-874e85b2b45b238404d6b8e11b80fda8a3425677.zip |
Bug 565720 - Automatic disassembly view refresh with memory map events
Change-Id: Ibd121e6a22a2156e7112b1687d01a9ecf70a2f14
Signed-off-by: Deep Amin <deep.amin@intel.com>
-rw-r--r-- | plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/disassembly/TCFDisassemblyBackend.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/disassembly/TCFDisassemblyBackend.java b/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/disassembly/TCFDisassemblyBackend.java index cbccd0343..8bf53b83b 100644 --- a/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/disassembly/TCFDisassemblyBackend.java +++ b/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/disassembly/TCFDisassemblyBackend.java @@ -63,6 +63,8 @@ import org.eclipse.tcf.services.ILineNumbers; import org.eclipse.tcf.services.ILineNumbers.CodeArea; import org.eclipse.tcf.services.ILineNumbers.DoneMapToSource; import org.eclipse.tcf.services.IMemory.MemoryError; +import org.eclipse.tcf.services.IMemoryMap; +import org.eclipse.tcf.services.IMemoryMap.MemoryMapListener; import org.eclipse.tcf.services.IMemory; import org.eclipse.tcf.services.IRunControl; import org.eclipse.tcf.services.IRunControl.RunControlContext; @@ -194,6 +196,23 @@ public class TCFDisassemblyBackend extends AbstractDisassemblyBackend { } } + private class TCFMemoryMapListener implements MemoryMapListener { + + @Override + public void changed(String context_id) { + if (fMemoryContext == null) + return; + if (!fMemoryContext.getID().equals(context_id)) + return; + if (fCallback == null) + return; + try { + fCallback.getClass().getMethod("refresh").invoke(fCallback); + } catch (Exception e) { + } + } + } + private volatile boolean fSuspended; private volatile TCFNodeExecContext fExecContext; private volatile TCFNodeExecContext fMemoryContext; @@ -272,6 +291,7 @@ public class TCFDisassemblyBackend extends AbstractDisassemblyBackend { } private final IRunControl.RunControlListener fRunControlListener = new TCFRunControlListener(); + private final IMemoryMap.MemoryMapListener fMemoryMapListener = new TCFMemoryMapListener(); private final IChannelListener fChannelListener = new TCFChannelListener(); private final ILaunchesListener fLaunchesListener = new TCFLaunchListener(); @@ -367,6 +387,8 @@ public class TCFDisassemblyBackend extends AbstractDisassemblyBackend { IChannel channel = context.getChannel(); IRunControl rctl = channel.getRemoteService(IRunControl.class); if (rctl != null) rctl.addListener(fRunControlListener); + IMemoryMap mmap = channel.getRemoteService(IMemoryMap.class); + if (mmap != null) mmap.addListener(fMemoryMapListener); channel.addChannelListener(fChannelListener); } }); @@ -381,6 +403,8 @@ public class TCFDisassemblyBackend extends AbstractDisassemblyBackend { IChannel channel = context.getChannel(); IRunControl rctl = channel.getRemoteService(IRunControl.class); if (rctl != null) rctl.removeListener(fRunControlListener); + IMemoryMap mmap = channel.getRemoteService(IMemoryMap.class); + if (mmap != null) mmap.removeListener(fMemoryMapListener); channel.removeChannelListener(fChannelListener); } }); |