summaryrefslogtreecommitdiffstats
path: root/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt60
1 files changed, 6 insertions, 54 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
index 703d4623b..daee937ca 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
@@ -4,14 +4,13 @@
package org.yuzu.yuzu_emu.fragments
import android.content.Context
-import android.content.IntentFilter
import android.content.SharedPreferences
import android.graphics.Color
import android.os.Bundle
import android.os.Handler
+import android.os.Looper
import android.view.*
import android.widget.TextView
-import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.widget.PopupMenu
import androidx.core.content.res.ResourcesCompat
@@ -19,7 +18,6 @@ import androidx.core.graphics.Insets
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment
-import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.preference.PreferenceManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.yuzu.yuzu_emu.NativeLibrary
@@ -32,13 +30,11 @@ import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
import org.yuzu.yuzu_emu.model.Game
import org.yuzu.yuzu_emu.utils.*
-import org.yuzu.yuzu_emu.utils.DirectoryInitialization.DirectoryInitializationState
import org.yuzu.yuzu_emu.utils.SerializableHelper.parcelable
-class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.FrameCallback {
+class EmulationFragment : Fragment(), SurfaceHolder.Callback {
private lateinit var preferences: SharedPreferences
private lateinit var emulationState: EmulationState
- private var directoryStateReceiver: DirectoryStateReceiver? = null
private var emulationActivity: EmulationActivity? = null
private var perfStatsUpdater: (() -> Unit)? = null
@@ -144,25 +140,16 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
override fun onResume() {
super.onResume()
- Choreographer.getInstance().postFrameCallback(this)
- if (DirectoryInitialization.areDirectoriesReady()) {
- emulationState.run(emulationActivity!!.isActivityRecreated)
- } else {
- setupDirectoriesThenStartEmulation()
+ if (!DirectoryInitialization.areDirectoriesReady) {
+ DirectoryInitialization.start(requireContext())
}
+ emulationState.run(emulationActivity!!.isActivityRecreated)
}
override fun onPause() {
- if (directoryStateReceiver != null) {
- LocalBroadcastManager.getInstance(requireActivity()).unregisterReceiver(
- directoryStateReceiver!!
- )
- directoryStateReceiver = null
- }
if (emulationState.isRunning) {
emulationState.pause()
}
- Choreographer.getInstance().removeFrameCallback(this)
super.onPause()
}
@@ -176,36 +163,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
super.onDetach()
}
- private fun setupDirectoriesThenStartEmulation() {
- val statusIntentFilter = IntentFilter(
- DirectoryInitialization.BROADCAST_ACTION
- )
- directoryStateReceiver =
- DirectoryStateReceiver { directoryInitializationState: DirectoryInitializationState ->
- if (directoryInitializationState ==
- DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED
- ) {
- emulationState.run(emulationActivity!!.isActivityRecreated)
- } else if (directoryInitializationState ==
- DirectoryInitializationState.CANT_FIND_EXTERNAL_STORAGE
- ) {
- Toast.makeText(
- context,
- R.string.external_storage_not_mounted,
- Toast.LENGTH_SHORT
- )
- .show()
- }
- }
-
- // Registers the DirectoryStateReceiver and its intent filters
- LocalBroadcastManager.getInstance(requireActivity()).registerReceiver(
- directoryStateReceiver!!,
- statusIntentFilter
- )
- DirectoryInitialization.start(requireContext())
- }
-
fun refreshInputOverlay() {
binding.surfaceInputOverlay.refreshControls()
}
@@ -259,11 +216,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
emulationState.clearSurface()
}
- override fun doFrame(frameTimeNanos: Long) {
- Choreographer.getInstance().postFrameCallback(this)
- NativeLibrary.DoFrame()
- }
-
private fun showOverlayOptions() {
val anchor = binding.inGameMenu.findViewById<View>(R.id.menu_overlay_controls)
val popup = PopupMenu(requireContext(), anchor)
@@ -474,7 +426,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
}
companion object {
- private val perfStatsUpdateHandler = Handler()
+ private val perfStatsUpdateHandler = Handler(Looper.myLooper()!!)
fun newInstance(game: Game): EmulationFragment {
val args = Bundle()