Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 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 {

Back to the top