android: Add optional androidDefault property to settings

Certain settings have specific defaults for Android only. This lets us reflect them in the Kotlin side with very little code.
This commit is contained in:
Charles Lombardo 2023-08-25 21:58:52 -04:00
parent 45280a0342
commit 21ad5f5cc5
3 changed files with 15 additions and 7 deletions

View File

@ -9,6 +9,8 @@ interface AbstractSetting {
val key: String val key: String
val category: Settings.Category val category: Settings.Category
val defaultValue: Any val defaultValue: Any
val androidDefault: Any?
get() = null
val valueAsString: String val valueAsString: String
get() = "" get() = ""

View File

@ -7,17 +7,18 @@ import org.yuzu.yuzu_emu.utils.NativeConfig
enum class BooleanSetting( enum class BooleanSetting(
override val key: String, override val key: String,
override val category: Settings.Category override val category: Settings.Category,
override val androidDefault: Boolean? = null
) : AbstractBooleanSetting { ) : AbstractBooleanSetting {
CPU_DEBUG_MODE("cpu_debug_mode", Settings.Category.Cpu), CPU_DEBUG_MODE("cpu_debug_mode", Settings.Category.Cpu),
FASTMEM("cpuopt_fastmem", Settings.Category.Cpu), FASTMEM("cpuopt_fastmem", Settings.Category.Cpu),
FASTMEM_EXCLUSIVES("cpuopt_fastmem_exclusives", Settings.Category.Cpu), FASTMEM_EXCLUSIVES("cpuopt_fastmem_exclusives", Settings.Category.Cpu),
RENDERER_USE_SPEED_LIMIT("use_speed_limit", Settings.Category.Core), RENDERER_USE_SPEED_LIMIT("use_speed_limit", Settings.Category.Core),
USE_DOCKED_MODE("use_docked_mode", Settings.Category.System), USE_DOCKED_MODE("use_docked_mode", Settings.Category.System, false),
RENDERER_USE_DISK_SHADER_CACHE("use_disk_shader_cache", Settings.Category.Renderer), RENDERER_USE_DISK_SHADER_CACHE("use_disk_shader_cache", Settings.Category.Renderer),
RENDERER_FORCE_MAX_CLOCK("force_max_clock", Settings.Category.Renderer), RENDERER_FORCE_MAX_CLOCK("force_max_clock", Settings.Category.Renderer),
RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders", Settings.Category.Renderer), RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders", Settings.Category.Renderer),
RENDERER_REACTIVE_FLUSHING("use_reactive_flushing", Settings.Category.Renderer), RENDERER_REACTIVE_FLUSHING("use_reactive_flushing", Settings.Category.Renderer, false),
RENDERER_DEBUG("debug", Settings.Category.Renderer), RENDERER_DEBUG("debug", Settings.Category.Renderer),
PICTURE_IN_PICTURE("picture_in_picture", Settings.Category.Android), PICTURE_IN_PICTURE("picture_in_picture", Settings.Category.Android),
USE_CUSTOM_RTC("custom_rtc_enabled", Settings.Category.System); USE_CUSTOM_RTC("custom_rtc_enabled", Settings.Category.System);
@ -27,7 +28,9 @@ enum class BooleanSetting(
override fun setBoolean(value: Boolean) = NativeConfig.setBoolean(key, value) override fun setBoolean(value: Boolean) = NativeConfig.setBoolean(key, value)
override val defaultValue: Boolean by lazy { NativeConfig.getBoolean(key, true) } override val defaultValue: Boolean by lazy {
androidDefault ?: NativeConfig.getBoolean(key, true)
}
override val valueAsString: String override val valueAsString: String
get() = if (boolean) "1" else "0" get() = if (boolean) "1" else "0"

View File

@ -7,13 +7,14 @@ import org.yuzu.yuzu_emu.utils.NativeConfig
enum class IntSetting( enum class IntSetting(
override val key: String, override val key: String,
override val category: Settings.Category override val category: Settings.Category,
override val androidDefault: Int? = null
) : AbstractIntSetting { ) : AbstractIntSetting {
CPU_ACCURACY("cpu_accuracy", Settings.Category.Cpu), CPU_ACCURACY("cpu_accuracy", Settings.Category.Cpu),
REGION_INDEX("region_index", Settings.Category.System), REGION_INDEX("region_index", Settings.Category.System),
LANGUAGE_INDEX("language_index", Settings.Category.System), LANGUAGE_INDEX("language_index", Settings.Category.System),
RENDERER_BACKEND("backend", Settings.Category.Renderer), RENDERER_BACKEND("backend", Settings.Category.Renderer),
RENDERER_ACCURACY("gpu_accuracy", Settings.Category.Renderer), RENDERER_ACCURACY("gpu_accuracy", Settings.Category.Renderer, 0),
RENDERER_RESOLUTION("resolution_setup", Settings.Category.Renderer), RENDERER_RESOLUTION("resolution_setup", Settings.Category.Renderer),
RENDERER_VSYNC("use_vsync", Settings.Category.Renderer), RENDERER_VSYNC("use_vsync", Settings.Category.Renderer),
RENDERER_SCALING_FILTER("scaling_filter", Settings.Category.Renderer), RENDERER_SCALING_FILTER("scaling_filter", Settings.Category.Renderer),
@ -27,7 +28,9 @@ enum class IntSetting(
override fun setInt(value: Int) = NativeConfig.setInt(key, value) override fun setInt(value: Int) = NativeConfig.setInt(key, value)
override val defaultValue: Int by lazy { NativeConfig.getInt(key, true) } override val defaultValue: Int by lazy {
androidDefault ?: NativeConfig.getInt(key, true)
}
override val valueAsString: String override val valueAsString: String
get() = int.toString() get() = int.toString()