Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Leherbauer2014-07-29 10:13:23 -0400
committerAnton Leherbauer2014-07-29 10:33:06 -0400
commit99f7cf5d404ddda1fd70066e5f90b97bf2ce04d9 (patch)
tree5804635527f200e314b7c156e54b220ce43aac3d
parentdb2f21e5f20040dc0b076d52b0dfaf470f5e9b36 (diff)
downloadorg.eclipse.cdt-cdt_8_3.tar.gz
org.eclipse.cdt-cdt_8_3.tar.xz
org.eclipse.cdt-cdt_8_3.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.java22
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 269700af49..9444726235 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 {

Back to the top