diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt index 27291718dc..c5c1851e5d 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt @@ -8,7 +8,6 @@ import android.widget.Toast import org.dolphinemu.dolphinemu.NativeLibrary import org.dolphinemu.dolphinemu.R import org.dolphinemu.dolphinemu.features.input.model.MappingCommon -import org.dolphinemu.dolphinemu.services.GameFileCacheManager import java.io.Closeable class Settings : Closeable { @@ -19,7 +18,6 @@ class Settings : Closeable { private set private var settingsLoaded = false - private var loadedRecursiveIsoPathsValue = false private val isGameSpecific: Boolean get() = !TextUtils.isEmpty(gameId) @@ -41,8 +39,6 @@ class Settings : Closeable { check(!NativeLibrary.IsRunning()) { "Attempted to load game INI while emulating" } NativeConfig.loadGameInis(gameId, revision) } - - loadedRecursiveIsoPathsValue = BooleanSetting.MAIN_RECURSIVE_ISO_PATHS.boolean } fun loadSettings(gameId: String, revision: Int, isWii: Boolean) { @@ -65,11 +61,6 @@ class Settings : Closeable { NativeLibrary.ReloadLoggerConfig() NativeLibrary.UpdateGCAdapterScanThread() - - if (loadedRecursiveIsoPathsValue != BooleanSetting.MAIN_RECURSIVE_ISO_PATHS.boolean) { - // Refresh game library - GameFileCacheManager.startRescan() - } } else { // custom game settings if (context != null) { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/GameFileCacheManager.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/GameFileCacheManager.java index a979ee599f..4c77cfdbc2 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/GameFileCacheManager.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/GameFileCacheManager.java @@ -2,9 +2,14 @@ package org.dolphinemu.dolphinemu.services; +import android.os.Handler; +import android.os.Looper; + import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting; +import org.dolphinemu.dolphinemu.features.settings.model.ConfigChangedCallback; import org.dolphinemu.dolphinemu.model.GameFile; import org.dolphinemu.dolphinemu.model.GameFileCache; import org.dolphinemu.dolphinemu.ui.platform.Platform; @@ -26,6 +31,7 @@ public final class GameFileCacheManager new MutableLiveData<>(new GameFile[]{}); private static boolean sFirstLoadDone = false; private static boolean sRunRescanAfterLoad = false; + private static boolean sRecursiveScanEnabled; private static final ExecutorService sExecutor = Executors.newFixedThreadPool(1); private static final MutableLiveData sLoadInProgress = new MutableLiveData<>(false); @@ -182,6 +188,7 @@ public final class GameFileCacheManager if (!sFirstLoadDone) { sFirstLoadDone = true; + setUpAutomaticRescan(); sGameFileCache.load(); if (sGameFileCache.getSize() != 0) { @@ -258,4 +265,19 @@ public final class GameFileCacheManager sGameFileCache = new GameFileCache(); } } + + private static void setUpAutomaticRescan() + { + sRecursiveScanEnabled = BooleanSetting.MAIN_RECURSIVE_ISO_PATHS.getBoolean(); + new ConfigChangedCallback(() -> + new Handler(Looper.getMainLooper()).post(() -> + { + boolean recursiveScanEnabled = BooleanSetting.MAIN_RECURSIVE_ISO_PATHS.getBoolean(); + if (sRecursiveScanEnabled != recursiveScanEnabled) + { + sRecursiveScanEnabled = recursiveScanEnabled; + startRescan(); + } + })); + } }