mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-11-04 04:34:07 +01:00 
			
		
		
		
	android: Prevent editing non-savable settings in per-game settings
This commit is contained in:
		
							parent
							
								
									f6bf8b3ed3
								
							
						
					
					
						commit
						6ae4177b25
					
				@ -22,6 +22,9 @@ interface AbstractSetting {
 | 
			
		||||
        get() = NativeConfig.usingGlobal(key)
 | 
			
		||||
        set(value) = NativeConfig.setGlobal(key, value)
 | 
			
		||||
 | 
			
		||||
    val isSaveable: Boolean
 | 
			
		||||
        get() = NativeConfig.getIsSaveable(key)
 | 
			
		||||
 | 
			
		||||
    fun getValueAsString(needsGlobal: Boolean = false): String
 | 
			
		||||
 | 
			
		||||
    fun reset()
 | 
			
		||||
 | 
			
		||||
@ -30,6 +30,11 @@ abstract class SettingsItem(
 | 
			
		||||
 | 
			
		||||
    val isEditable: Boolean
 | 
			
		||||
        get() {
 | 
			
		||||
            // Can't edit settings that aren't saveable in per-game config even if they are switchable
 | 
			
		||||
            if (NativeConfig.isPerGameConfigLoaded() && !setting.isSaveable) {
 | 
			
		||||
                return false
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!NativeLibrary.isRunning()) return true
 | 
			
		||||
 | 
			
		||||
            // Prevent editing settings that were modified in per-game config while editing global
 | 
			
		||||
@ -37,6 +42,7 @@ abstract class SettingsItem(
 | 
			
		||||
            if (!NativeConfig.isPerGameConfigLoaded() && !setting.global) {
 | 
			
		||||
                return false
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return setting.isRuntimeModifiable
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -59,6 +65,7 @@ abstract class SettingsItem(
 | 
			
		||||
        val emptySetting = object : AbstractSetting {
 | 
			
		||||
            override val key: String = ""
 | 
			
		||||
            override val defaultValue: Any = false
 | 
			
		||||
            override val isSaveable = true
 | 
			
		||||
            override fun getValueAsString(needsGlobal: Boolean): String = ""
 | 
			
		||||
            override fun reset() {}
 | 
			
		||||
        }
 | 
			
		||||
@ -303,6 +310,8 @@ abstract class SettingsItem(
 | 
			
		||||
                        BooleanSetting.FASTMEM_EXCLUSIVES.global = value
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                override val isSaveable = true
 | 
			
		||||
 | 
			
		||||
                override fun getValueAsString(needsGlobal: Boolean): String =
 | 
			
		||||
                    getBoolean().toString()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -110,6 +110,8 @@ object NativeConfig {
 | 
			
		||||
    @Synchronized
 | 
			
		||||
    external fun setGlobal(key: String, global: Boolean)
 | 
			
		||||
 | 
			
		||||
    external fun getIsSaveable(key: String): Boolean
 | 
			
		||||
 | 
			
		||||
    external fun getDefaultToString(key: String): String
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
@ -249,6 +249,15 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setGlobal(JNIEnv* env, jobject o
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
jboolean Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getIsSaveable(JNIEnv* env, jobject obj,
 | 
			
		||||
                                                                  jstring jkey) {
 | 
			
		||||
    auto setting = getSetting<std::string>(env, jkey);
 | 
			
		||||
    if (setting != nullptr) {
 | 
			
		||||
        return setting->Save();
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getDefaultToString(JNIEnv* env, jobject obj,
 | 
			
		||||
                                                                      jstring jkey) {
 | 
			
		||||
    auto setting = getSetting<std::string>(env, jkey);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user