@@ -21,10 +21,9 @@ public final class ModuleManager {
2121 ModuleInfo .FLAG_MODULE_UNINSTALLING | ModuleInfo .FLAG_MODULE_ACTIVE ;
2222 private static final int FLAGS_RESET_UPDATE = FLAG_MM_INVALID | FLAG_MM_UNPROCESSED ;
2323 private final HashMap <String , ModuleInfo > moduleInfos ;
24- private final HashMap <String , ModuleInfo > invalidModules ;
2524 private final SharedPreferences bootPrefs ;
2625 private final Object scanLock = new Object ();
27- private boolean scanning , lastScanResult ;
26+ private boolean scanning ;
2827
2928 private static final ModuleManager INSTANCE = new ModuleManager ();
3029
@@ -34,19 +33,17 @@ public static ModuleManager getINSTANCE() {
3433
3534 private ModuleManager () {
3635 this .moduleInfos = new HashMap <>();
37- this .invalidModules = new HashMap <>();
3836 this .bootPrefs = MainApplication .getBootSharedPreferences ();
3937 }
4038
4139 // MultiThread friendly method
42- public final boolean scan () {
40+ public final void scan () {
4341 if (!this .scanning ) {
4442 // Do scan
4543 synchronized (scanLock ) {
4644 this .scanning = true ;
4745 try {
48- this .lastScanResult =
49- this .scanInternal ();
46+ this .scanInternal ();
5047 } finally {
5148 this .scanning = false ;
5249 }
@@ -55,7 +52,6 @@ public final boolean scan() {
5552 // Wait for current scan
5653 synchronized (scanLock ) {}
5754 }
58- return this .lastScanResult ;
5955 }
6056
6157 // Pause execution until the scan is completed if one is currently running
@@ -69,13 +65,9 @@ public final void runAfterScan(Runnable runnable) {
6965 }
7066 }
7167
72- private boolean scanInternal () {
68+ private void scanInternal () {
7369 boolean firstScan = this .bootPrefs .getBoolean ("mm_first_scan" , true );
74- boolean changed = false ;
7570 SharedPreferences .Editor editor = firstScan ? this .bootPrefs .edit () : null ;
76- // Reset existing ModuleInfo
77- this .moduleInfos .putAll (this .invalidModules );
78- this .invalidModules .clear ();
7971 for (ModuleInfo v : this .moduleInfos .values ()) {
8072 v .flags |= FLAG_MM_UNPROCESSED ;
8173 v .flags &= ~FLAGS_RESET_INIT ;
@@ -94,7 +86,6 @@ private boolean scanInternal() {
9486 if (moduleInfo == null ) {
9587 moduleInfo = new ModuleInfo (module );
9688 moduleInfos .put (module , moduleInfo );
97- changed = true ;
9889 // Shis should not really happen, but let's handles theses cases anyway
9990 moduleInfo .flags |= ModuleInfo .FLAG_MODULE_UPDATING_ONLY ;
10091 }
@@ -118,7 +109,7 @@ private boolean scanInternal() {
118109 }
119110 try {
120111 PropUtils .readProperties (moduleInfo ,
121- "/data/adb/modules/" + module + "/module.prop" );
112+ "/data/adb/modules/" + module + "/module.prop" , true );
122113 } catch (Exception e ) {
123114 Log .d (TAG , "Failed to parse metadata!" , e );
124115 moduleInfo .flags |= FLAG_MM_INVALID ;
@@ -132,13 +123,12 @@ private boolean scanInternal() {
132123 if (moduleInfo == null ) {
133124 moduleInfo = new ModuleInfo (module );
134125 moduleInfos .put (module , moduleInfo );
135- changed = true ;
136126 }
137127 moduleInfo .flags &= ~FLAGS_RESET_UPDATE ;
138128 moduleInfo .flags |= ModuleInfo .FLAG_MODULE_UPDATING ;
139129 try {
140130 PropUtils .readProperties (moduleInfo ,
141- "/data/adb/modules_update/" + module + "/module.prop" );
131+ "/data/adb/modules_update/" + module + "/module.prop" , true );
142132 } catch (Exception e ) {
143133 Log .d (TAG , "Failed to parse metadata!" , e );
144134 moduleInfo .flags |= FLAG_MM_INVALID ;
@@ -152,10 +142,6 @@ private boolean scanInternal() {
152142 if ((moduleInfo .flags & FLAG_MM_UNPROCESSED ) != 0 ) {
153143 moduleInfoIterator .remove ();
154144 continue ; // Don't process fallbacks if unreferenced
155- } else if ((moduleInfo .flags & FLAG_MM_INVALID ) != 0 ) {
156- moduleInfo .flags &=~ FLAG_MM_INVALID ;
157- this .invalidModules .put (moduleInfo .id , moduleInfo );
158- moduleInfoIterator .remove ();
159145 }
160146 if (moduleInfo .name == null || (moduleInfo .name .equals (moduleInfo .id ))) {
161147 moduleInfo .name = Character .toUpperCase (moduleInfo .id .charAt (0 )) +
@@ -169,19 +155,13 @@ private boolean scanInternal() {
169155 editor .putBoolean ("mm_first_scan" , false );
170156 editor .apply ();
171157 }
172- return changed ;
173158 }
174159
175160 public HashMap <String , ModuleInfo > getModules () {
176161 this .afterScan ();
177162 return this .moduleInfos ;
178163 }
179164
180- public HashMap <String , ModuleInfo > getInvalidModules () {
181- this .afterScan ();
182- return invalidModules ;
183- }
184-
185165 public boolean setEnabledState (ModuleInfo moduleInfo , boolean checked ) {
186166 if (moduleInfo .hasFlag (ModuleInfo .FLAG_MODULE_UPDATING ) && !checked ) return false ;
187167 SuFile disable = new SuFile ("/data/adb/modules/" + moduleInfo .id + "/disable" );
0 commit comments