Skip to content

Commit ff4dde6

Browse files
jpstotzskylot
andauthored
fix(gui): use UI thread for refreshStackFrameList in debugger view (PR #2807)
* fix(gui): use UI thread for refreshStackFrameList in debugger view * call `resetAllDebuggingInfo` also from UI thread --------- Co-authored-by: Skylot <118523+skylot@users.noreply.github.com>
1 parent 468b523 commit ff4dde6

2 files changed

Lines changed: 13 additions & 10 deletions

File tree

jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -905,8 +905,8 @@ private List<SmaliRegister> getSmaliRegisterList() {
905905
private void resetAllInfo() {
906906
isSuspended = true;
907907
toBeUpdatedTreeNode = null;
908-
debuggerPanel.resetAllDebuggingInfo();
909908
cur.reset();
909+
UiUtils.uiRun(debuggerPanel::resetAllDebuggingInfo);
910910
}
911911

912912
private List<RuntimeVarInfo> getRuntimeDebugInfo(FrameNode frame) {
@@ -1367,7 +1367,7 @@ public void setAbsoluteType(boolean abs) {
13671367
}
13681368
}
13691369

1370-
private static class FieldTreeNode extends RuntimeValueTreeNode {
1370+
static class FieldTreeNode extends RuntimeValueTreeNode {
13711371
private static final long serialVersionUID = -1111111202103122235L;
13721372

13731373
private final RuntimeField field;

jadx-gui/src/main/java/jadx/gui/ui/panel/JDebuggerPanel.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ public void scrollToSmaliLine(JClass cls, int pos, boolean debugMode) {
448448
}
449449

450450
public void resetAllDebuggingInfo() {
451+
UiUtils.uiThreadGuard();
451452
clearFrameAndThreadList();
452453
resetRegTreeNodes();
453454
resetThisTreeNodes();
@@ -483,13 +484,15 @@ public void refreshThreadBox(List<? extends IListElement> elements) {
483484
}
484485

485486
public void refreshStackFrameList(List<? extends IListElement> elements) {
486-
if (elements.size() > 0) {
487-
DefaultListModel<IListElement> model =
488-
(DefaultListModel<IListElement>) stackFrameList.getModel();
489-
elements.forEach(model::addElement);
490-
stackFrameList.setFont(mainWindow.getSettings().getCodeFont());
491-
}
492-
SwingUtilities.invokeLater(stackFrameList::repaint);
487+
UiUtils.uiRun(() -> {
488+
if (!elements.isEmpty()) {
489+
DefaultListModel<IListElement> model =
490+
(DefaultListModel<IListElement>) stackFrameList.getModel();
491+
model.addAll(elements);
492+
stackFrameList.setFont(mainWindow.getSettings().getCodeFont());
493+
}
494+
stackFrameList.repaint();
495+
});
493496
}
494497

495498
public void refreshRegisterTree() {
@@ -578,7 +581,7 @@ public boolean isUpdated() {
578581

579582
@Override
580583
public String toString() {
581-
StringBuilder sb = new StringBuilder();
584+
StringBuilder sb = new StringBuilder(64);
582585
sb.append(getName());
583586
String val = getValue();
584587
if (val != null) {

0 commit comments

Comments
 (0)