diff --git a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt index 4681bd319..ef271b09b 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt @@ -55,6 +55,8 @@ class EmulationActivity : AppCompatActivity() { private lateinit var screenAdjustmentUtil: ScreenAdjustmentUtil private lateinit var hotkeyUtility: HotkeyUtility + private var isEmulationRunning: Boolean = false + override fun onCreate(savedInstanceState: Bundle?) { ThemeUtil.setTheme(this) @@ -84,6 +86,9 @@ class EmulationActivity : AppCompatActivity() { ) EmulationLifecycleUtil.addShutdownHook(hook = { this.finish() }) + + isEmulationRunning = true + instance = this } // On some devices, the system bars will not disappear on first boot or after some @@ -104,8 +109,20 @@ class EmulationActivity : AppCompatActivity() { NativeLibrary.reloadCameraDevices() } + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + outState.putBoolean("isEmulationRunning", isEmulationRunning) + } + + override fun onRestoreInstanceState(savedInstanceState: Bundle) { + super.onRestoreInstanceState(savedInstanceState) + isEmulationRunning = savedInstanceState.getBoolean("isEmulationRunning", false) + } + override fun onDestroy() { EmulationLifecycleUtil.clear() + isEmulationRunning = false + instance = null super.onDestroy() } @@ -445,4 +462,12 @@ class EmulationActivity : AppCompatActivity() { OnFilePickerResult(result.toString()) } + + companion object { + private var instance: EmulationActivity? = null + + fun isRunning(): Boolean { + return instance?.isEmulationRunning ?: false + } + } } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.kt index 5f6b4b70c..193f54a89 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.kt @@ -5,6 +5,7 @@ package org.citra.citra_emu.features.settings.model.view import org.citra.citra_emu.NativeLibrary +import org.citra.citra_emu.activities.EmulationActivity import org.citra.citra_emu.features.settings.model.AbstractSetting /** @@ -23,7 +24,7 @@ abstract class SettingsItem( val isEditable: Boolean get() { - if (!NativeLibrary.isRunning()) return true + if (!EmulationActivity.isRunning()) return true return setting?.isRuntimeEditable ?: false } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt index ac0c60a90..b0e0789c5 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt @@ -6,6 +6,7 @@ package org.citra.citra_emu.features.settings.ui.viewholder import android.view.View import org.citra.citra_emu.NativeLibrary +import org.citra.citra_emu.activities.EmulationActivity import org.citra.citra_emu.databinding.ListItemSettingBinding import org.citra.citra_emu.features.settings.model.view.RunnableSetting import org.citra.citra_emu.features.settings.model.view.SettingsItem @@ -44,10 +45,10 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA } override fun onClick(clicked: View) { - if (!setting.isRuntimeRunnable && !NativeLibrary.isRunning()) { - setting.runnable.invoke() - } else { + if (!setting.isRuntimeRunnable && EmulationActivity.isRunning()) { adapter.onClickDisabledSetting() + } else { + setting.runnable.invoke() } }