From 489fbb5e42243ca939eb529bcbd8fb6c714f33d6 Mon Sep 17 00:00:00 2001 From: S-trace Date: Wed, 11 Dec 2019 14:40:49 +0300 Subject: [PATCH] gui: Improve performance of renaming Fixes multiple decompilation of classes - now each class decompiled just once. --- jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java index f21b98a0e..b36ee7767 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java @@ -9,6 +9,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; +import java.util.HashSet; import java.util.List; import java.util.Map; @@ -26,7 +27,6 @@ import jadx.core.dex.nodes.DexNode; import jadx.core.dex.nodes.RootNode; import jadx.core.dex.visitors.RenameVisitor; import jadx.core.utils.files.InputFile; -import jadx.gui.treemodel.CodeNode; import jadx.gui.treemodel.JClass; import jadx.gui.treemodel.JField; import jadx.gui.treemodel.JMethod; @@ -230,9 +230,10 @@ public class RenameDialog extends JDialog { if (usageInfo == null) { return; } - for (CodeNode node : usageInfo.getUsageList(node)) { - node.getRootClass().refresh(); // Update code cache - } + + HashSet usageClasses = new HashSet<>(); + usageInfo.getUsageList(node).forEach((node) -> usageClasses.add(node.getRootClass().getCls())); + usageClasses.forEach(JavaClass::refresh); } private void initCommon() {