summaryrefslogtreecommitdiff
path: root/src/android/app
diff options
context:
space:
mode:
authorGravatar t8952023-12-12 14:53:37 -0500
committerGravatar t8952023-12-12 17:25:37 -0500
commit6ae4177b2520e0b48399615de5e964495fc2115d (patch)
tree170fc314c895053eec1bcc17829dabc70b0ec12f /src/android/app
parentandroid: Pre-select custom config in game launch dialog (diff)
downloadyuzu-6ae4177b2520e0b48399615de5e964495fc2115d.tar.gz
yuzu-6ae4177b2520e0b48399615de5e964495fc2115d.tar.xz
yuzu-6ae4177b2520e0b48399615de5e964495fc2115d.zip
android: Prevent editing non-savable settings in per-game settings
Diffstat (limited to 'src/android/app')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt3
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt9
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt2
-rw-r--r--src/android/app/src/main/jni/native_config.cpp9
4 files changed, 23 insertions, 0 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt
index e384c78c2..3b78c7cf0 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt
@@ -22,6 +22,9 @@ interface AbstractSetting {
22 get() = NativeConfig.usingGlobal(key) 22 get() = NativeConfig.usingGlobal(key)
23 set(value) = NativeConfig.setGlobal(key, value) 23 set(value) = NativeConfig.setGlobal(key, value)
24 24
25 val isSaveable: Boolean
26 get() = NativeConfig.getIsSaveable(key)
27
25 fun getValueAsString(needsGlobal: Boolean = false): String 28 fun getValueAsString(needsGlobal: Boolean = false): String
26 29
27 fun reset() 30 fun reset()
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
index 28d8dea60..2e97aee2c 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
@@ -30,6 +30,11 @@ abstract class SettingsItem(
30 30
31 val isEditable: Boolean 31 val isEditable: Boolean
32 get() { 32 get() {
33 // Can't edit settings that aren't saveable in per-game config even if they are switchable
34 if (NativeConfig.isPerGameConfigLoaded() && !setting.isSaveable) {
35 return false
36 }
37
33 if (!NativeLibrary.isRunning()) return true 38 if (!NativeLibrary.isRunning()) return true
34 39
35 // Prevent editing settings that were modified in per-game config while editing global 40 // Prevent editing settings that were modified in per-game config while editing global
@@ -37,6 +42,7 @@ abstract class SettingsItem(
37 if (!NativeConfig.isPerGameConfigLoaded() && !setting.global) { 42 if (!NativeConfig.isPerGameConfigLoaded() && !setting.global) {
38 return false 43 return false
39 } 44 }
45
40 return setting.isRuntimeModifiable 46 return setting.isRuntimeModifiable
41 } 47 }
42 48
@@ -59,6 +65,7 @@ abstract class SettingsItem(
59 val emptySetting = object : AbstractSetting { 65 val emptySetting = object : AbstractSetting {
60 override val key: String = "" 66 override val key: String = ""
61 override val defaultValue: Any = false 67 override val defaultValue: Any = false
68 override val isSaveable = true
62 override fun getValueAsString(needsGlobal: Boolean): String = "" 69 override fun getValueAsString(needsGlobal: Boolean): String = ""
63 override fun reset() {} 70 override fun reset() {}
64 } 71 }
@@ -303,6 +310,8 @@ abstract class SettingsItem(
303 BooleanSetting.FASTMEM_EXCLUSIVES.global = value 310 BooleanSetting.FASTMEM_EXCLUSIVES.global = value
304 } 311 }
305 312
313 override val isSaveable = true
314
306 override fun getValueAsString(needsGlobal: Boolean): String = 315 override fun getValueAsString(needsGlobal: Boolean): String =
307 getBoolean().toString() 316 getBoolean().toString()
308 317
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 2d3d8ec79..7512d5eed 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
@@ -110,6 +110,8 @@ object NativeConfig {
110 @Synchronized 110 @Synchronized
111 external fun setGlobal(key: String, global: Boolean) 111 external fun setGlobal(key: String, global: Boolean)
112 112
113 external fun getIsSaveable(key: String): Boolean
114
113 external fun getDefaultToString(key: String): String 115 external fun getDefaultToString(key: String): String
114 116
115 /** 117 /**
diff --git a/src/android/app/src/main/jni/native_config.cpp b/src/android/app/src/main/jni/native_config.cpp
index 9e0a33c0f..324d9e9cd 100644
--- a/src/android/app/src/main/jni/native_config.cpp
+++ b/src/android/app/src/main/jni/native_config.cpp
@@ -249,6 +249,15 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setGlobal(JNIEnv* env, jobject o
249 } 249 }
250} 250}
251 251
252jboolean Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getIsSaveable(JNIEnv* env, jobject obj,
253 jstring jkey) {
254 auto setting = getSetting<std::string>(env, jkey);
255 if (setting != nullptr) {
256 return setting->Save();
257 }
258 return false;
259}
260
252jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getDefaultToString(JNIEnv* env, jobject obj, 261jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getDefaultToString(JNIEnv* env, jobject obj,
253 jstring jkey) { 262 jstring jkey) {
254 auto setting = getSetting<std::string>(env, jkey); 263 auto setting = getSetting<std::string>(env, jkey);