Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Leherbauer2014-07-29 14:13:23 +0000
committerAnton Leherbauer2014-07-29 14:16:02 +0000
commitac0600b27812a1384a753c5e104d232b6ff67c80 (patch)
tree8c7310b24e100f294de8a425e34e0c0c7a956393
parentff129210f2e8410df7d8f33583800729f5f46a56 (diff)
downloadorg.eclipse.cdt-ac0600b27812a1384a753c5e104d232b6ff67c80.tar.gz
org.eclipse.cdt-ac0600b27812a1384a753c5e104d232b6ff67c80.tar.xz
org.eclipse.cdt-ac0600b27812a1384a753c5e104d232b6ff67c80.zip
Disassembly: Improve reliability of client-side address navigation
-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 8476a4d1b10..fa8d5aa7479 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