1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-03 07:05:24 +02:00

Disassembly: Improve reliability of client-side address navigation

This commit is contained in:
Anton Leherbauer 2014-07-29 16:13:23 +02:00
parent db2f21e5f2
commit 99f7cf5d40

View file

@ -1380,8 +1380,17 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem
*/ */
@Override @Override
public final void gotoAddress(IAddress address) { public final void gotoAddress(IAddress address) {
assert isGuiThread();
if (address != null) { 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,10 +1942,8 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem
final SafeRunnable safeUpdate = new SafeRunnable() { final SafeRunnable safeUpdate = new SafeRunnable() {
@Override @Override
public void run() { public void run() {
if (updateCount == fUpdateCount && fViewer != null) {
update.run(); update.run();
} }
}
@Override @Override
public void handleException(Throwable e) { public void handleException(Throwable e) {
internalError(e); internalError(e);
@ -1946,8 +1953,13 @@ public abstract class DisassemblyPart extends WorkbenchPart implements IDisassem
invokeLater(new Runnable() { invokeLater(new Runnable() {
@Override @Override
public void run() { public void run() {
if (updateCount == fUpdateCount && fViewer != null) {
if (fUpdatePending)
invokeLater(this);
else
SafeRunner.run(safeUpdate); SafeRunner.run(safeUpdate);
} }
}
}); });
} else { } else {
SafeRunner.run(safeUpdate); SafeRunner.run(safeUpdate);