diff options
| author | t895 <clombardo169@gmail.com> | 2023-11-12 02:08:43 -0500 | 
|---|---|---|
| committer | t895 <clombardo169@gmail.com> | 2023-11-21 01:58:13 -0500 | 
| commit | e637ec0c38aa29d75a34b281cd519e2166c94a7a (patch) | |
| tree | 950678d30c0e98958f0c50f8567a3fc5ee388ccd | |
| parent | e744c06f613d05762e3897a1df7709e8104ec03c (diff) | |
android: Rework config lifecycle
Exposes options for initializing, unloading, reloading, and saving settings that let us update the config much more granularly based on what's happening in the UI.
6 files changed, 31 insertions, 6 deletions
| diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt index 9ebd6c732..f2ba2504c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt @@ -230,8 +230,6 @@ object NativeLibrary {       */      external fun onTouchReleased(finger_id: Int) -    external fun reloadSettings() -      external fun initGameIni(gameID: String?)      external fun setAppDirectory(directory: String) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt index 2bf0e1b0d..d005c656e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt @@ -7,7 +7,7 @@ import android.text.TextUtils  import android.widget.Toast  import org.yuzu.yuzu_emu.R  import org.yuzu.yuzu_emu.YuzuApplication -import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile +import org.yuzu.yuzu_emu.utils.NativeConfig  object Settings {      private val context get() = YuzuApplication.appContext @@ -19,7 +19,7 @@ object Settings {                  context.getString(R.string.ini_saved),                  Toast.LENGTH_SHORT              ).show() -            SettingsFile.saveFile(SettingsFile.FILE_NAME_CONFIG) +            NativeConfig.saveSettings()          } else {              // TODO: Save custom game settings              Toast.makeText( diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt index c73edd50e..48bdbdd75 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt @@ -21,7 +21,6 @@ import androidx.navigation.navArgs  import com.google.android.material.color.MaterialColors  import kotlinx.coroutines.flow.collectLatest  import kotlinx.coroutines.launch -import org.yuzu.yuzu_emu.NativeLibrary  import java.io.IOException  import org.yuzu.yuzu_emu.R  import org.yuzu.yuzu_emu.databinding.ActivitySettingsBinding @@ -165,11 +164,12 @@ class SettingsActivity : AppCompatActivity() {          settingsViewModel.shouldSave = false          // Delete settings file because the user may have changed values that do not exist in the UI +        NativeConfig.unloadConfig()          val settingsFile = SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_CONFIG)          if (!settingsFile.delete()) {              throw IOException("Failed to delete $settingsFile")          } -        NativeLibrary.reloadSettings() +        NativeConfig.initializeConfig()          Toast.makeText(              applicationContext, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt index ace5dddea..bd2f4cd25 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt @@ -625,6 +625,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {                  }                  // Clear existing user data +                NativeConfig.unloadConfig()                  File(DirectoryInitialization.userDirectory!!).deleteRecursively()                  // Copy archive to internal storage @@ -643,6 +644,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {                  // Reinitialize relevant data                  NativeLibrary.initializeSystem(true) +                NativeConfig.initializeConfig()                  gamesViewModel.reloadGames(false)                  return@newInstance getString(R.string.user_data_import_success) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt index 5e9a1176a..21270fc84 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt @@ -16,6 +16,7 @@ object DirectoryInitialization {          if (!areDirectoriesReady) {              initializeInternalStorage()              NativeLibrary.initializeSystem(false) +            NativeConfig.initializeConfig()              areDirectoriesReady = true          }      } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt index 9425f8b99..87e579fa7 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt @@ -4,6 +4,30 @@  package org.yuzu.yuzu_emu.utils  object NativeConfig { +    /** +     * Creates a Config object and opens the emulation config. +     */ +    @Synchronized +    external fun initializeConfig() + +    /** +     * Destroys the stored config object. This automatically saves the existing config. +     */ +    @Synchronized +    external fun unloadConfig() + +    /** +     * Reads values saved to the config file and saves them. +     */ +    @Synchronized +    external fun reloadSettings() + +    /** +     * Saves settings values in memory to disk. +     */ +    @Synchronized +    external fun saveSettings() +      external fun getBoolean(key: String, getDefault: Boolean): Boolean      external fun setBoolean(key: String, value: Boolean) | 
