1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 22:25:25 +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
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 {