diff options
author | Anton Leherbauer | 2014-07-29 14:13:23 +0000 |
---|---|---|
committer | Anton Leherbauer | 2014-07-29 14:33:06 +0000 |
commit | 99f7cf5d404ddda1fd70066e5f90b97bf2ce04d9 (patch) | |
tree | 5804635527f200e314b7c156e54b220ce43aac3d | |
parent | db2f21e5f20040dc0b076d52b0dfaf470f5e9b36 (diff) | |
download | org.eclipse.cdt-99f7cf5d404ddda1fd70066e5f90b97bf2ce04d9.tar.gz org.eclipse.cdt-99f7cf5d404ddda1fd70066e5f90b97bf2ce04d9.tar.xz org.eclipse.cdt-99f7cf5d404ddda1fd70066e5f90b97bf2ce04d9.zip |
Disassembly: Improve reliability of client-side address navigationcdt_8_3
-rw-r--r-- | dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java | 22 |
1 files changed, 17 insertions, 5 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 269700af495..9444726235a 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 @@ -1380,8 +1380,17 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem */ @Override public final void gotoAddress(IAddress address) { + assert isGuiThread(); if (address != null) { - gotoAddress(address.getValue()); + final BigInteger addr = address.getValue(); + startUpdate(new Runnable() { + @Override + public void run() { + fGotoFramePending = false; + fGotoAddressPending = PC_UNKNOWN; + gotoAddress(addr); + } + }); } } @@ -1933,9 +1942,7 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem final SafeRunnable safeUpdate = new SafeRunnable() { @Override public void run() { - if (updateCount == fUpdateCount && fViewer != null) { - update.run(); - } + update.run(); } @Override public void handleException(Throwable e) { @@ -1946,7 +1953,12 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem invokeLater(new Runnable() { @Override public void run() { - SafeRunner.run(safeUpdate); + if (updateCount == fUpdateCount && fViewer != null) { + if (fUpdatePending) + invokeLater(this); + else + SafeRunner.run(safeUpdate); + } } }); } else { |