fix(gui): workaround to force class decompilation in loading task (#2400)
This commit is contained in:
@@ -122,8 +122,6 @@ public final class JavaClass implements JavaNode {
|
||||
if (listsLoaded) {
|
||||
return null;
|
||||
}
|
||||
listsLoaded = true;
|
||||
|
||||
ICodeInfo code;
|
||||
if (cls.getState().isProcessComplete()) {
|
||||
// already decompiled -> class internals loaded
|
||||
@@ -131,7 +129,12 @@ public final class JavaClass implements JavaNode {
|
||||
} else {
|
||||
code = cls.decompile();
|
||||
}
|
||||
loadLists();
|
||||
return code;
|
||||
}
|
||||
|
||||
private void loadLists() {
|
||||
listsLoaded = true;
|
||||
JadxDecompiler rootDecompiler = getRootDecompiler();
|
||||
int inClsCount = cls.getInnerClasses().size();
|
||||
if (inClsCount != 0) {
|
||||
@@ -139,7 +142,7 @@ public final class JavaClass implements JavaNode {
|
||||
for (ClassNode inner : cls.getInnerClasses()) {
|
||||
if (!inner.contains(AFlag.DONT_GENERATE)) {
|
||||
JavaClass javaClass = rootDecompiler.convertClassNode(inner);
|
||||
javaClass.load();
|
||||
javaClass.loadLists();
|
||||
list.add(javaClass);
|
||||
}
|
||||
}
|
||||
@@ -150,7 +153,7 @@ public final class JavaClass implements JavaNode {
|
||||
List<JavaClass> list = new ArrayList<>(inlinedClsCount);
|
||||
for (ClassNode inner : cls.getInlinedClasses()) {
|
||||
JavaClass javaClass = rootDecompiler.convertClassNode(inner);
|
||||
javaClass.load();
|
||||
javaClass.loadLists();
|
||||
list.add(javaClass);
|
||||
}
|
||||
this.inlinedClasses = Collections.unmodifiableList(list);
|
||||
@@ -178,7 +181,6 @@ public final class JavaClass implements JavaNode {
|
||||
mths.sort(Comparator.comparing(JavaMethod::getName));
|
||||
this.methods = Collections.unmodifiableList(mths);
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
JadxDecompiler getRootDecompiler() {
|
||||
|
||||
@@ -72,8 +72,9 @@ public class JClass extends JLoadableNode implements JRenameNode {
|
||||
public SimpleTask getLoadTask() {
|
||||
JClass rootClass = getRootClass();
|
||||
return new SimpleTask(NLS.str("progress.decompile"),
|
||||
() -> rootClass.getCls().decompile(),
|
||||
rootClass::load);
|
||||
() -> rootClass.getCls().getClassNode().decompile(), // run decompilation in background
|
||||
rootClass::load // load class internals and update UI
|
||||
);
|
||||
}
|
||||
|
||||
private synchronized void load() {
|
||||
|
||||
Reference in New Issue
Block a user