From c03b93e1f0b153c6e0765b2663473383d5b10331 Mon Sep 17 00:00:00 2001 From: Producdevity Date: Sat, 12 Jul 2025 20:47:37 +0200 Subject: [PATCH] fix: refactor EmulationFragment *handler callbacks using nullable Runnables * Remove unused `cpuBackend` and `gpuDriver` variables. * Use lambda syntax for `Slider.OnChangeListener`. * Remove unused imports. --- .../yuzu_emu/fragments/EmulationFragment.kt | 59 ++++++++----------- 1 file changed, 23 insertions(+), 36 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 0d6b744077..36870e9768 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 @@ -44,7 +44,6 @@ import androidx.core.view.updateLayoutParams import androidx.drawerlayout.widget.DrawerLayout import androidx.drawerlayout.widget.DrawerLayout.DrawerListener import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentActivity import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs @@ -53,7 +52,6 @@ import androidx.window.layout.WindowInfoTracker import androidx.window.layout.WindowLayoutInfo import com.google.android.material.color.MaterialColors import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.google.android.material.slider.Slider import com.google.android.material.textview.MaterialTextView import org.yuzu.yuzu_emu.HomeNavigationDirections import org.yuzu.yuzu_emu.NativeLibrary @@ -95,9 +93,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private var perfStatsUpdater: (() -> Unit)? = null private var socUpdater: (() -> Unit)? = null - private lateinit var cpuBackend: String - private lateinit var gpuDriver: String - private var _binding: FragmentEmulationBinding? = null private val binding get() = _binding!! @@ -117,6 +112,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private var intentGame: Game? = null private var isCustomSettingsIntent = false + private var perfStatsRunnable: Runnable? = null + private var socRunnable: Runnable? = null + override fun onAttach(context: Context) { super.onAttach(context) if (context is EmulationActivity) { @@ -536,16 +534,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { ViewUtils.showView(binding.loadingIndicator) } } - emulationViewModel.emulationStopped.collect(viewLifecycleOwner) { - if (it && emulationViewModel.programChanged.value != -1) { - if (perfStatsUpdater != null) { - perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!) - } - - if (socUpdater != null) { - socUpdateHandler.removeCallbacks(socUpdater!!) - } + emulationViewModel.emulationStopped.collect(viewLifecycleOwner) { stopped -> + if (stopped && emulationViewModel.programChanged.value != -1) { + perfStatsRunnable?.let { runnable -> perfStatsUpdateHandler.removeCallbacks(runnable) } + socRunnable?.let { runnable -> socUpdateHandler.removeCallbacks(runnable) } emulationState.changeProgram(emulationViewModel.programChanged.value) emulationViewModel.setProgramChanged(-1) emulationViewModel.setEmulationStopped(false) @@ -765,13 +758,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { binding.showStatsOverlayText.text = sb.toString() } - perfStatsUpdateHandler.postDelayed(perfStatsUpdater!!, 800) + perfStatsUpdateHandler.postDelayed(perfStatsRunnable!!, 800) } - perfStatsUpdateHandler.post(perfStatsUpdater!!) + perfStatsRunnable = Runnable { perfStatsUpdater?.invoke() } + perfStatsUpdateHandler.post(perfStatsRunnable!!) } else { - if (perfStatsUpdater != null) { - perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!) - } + perfStatsRunnable?.let { perfStatsUpdateHandler.removeCallbacks(it) } } } @@ -884,13 +876,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } - socUpdateHandler.postDelayed(socUpdater!!, 1000) + socUpdateHandler.postDelayed(socRunnable!!, 1000) } - socUpdateHandler.post(socUpdater!!) + socRunnable = Runnable { socUpdater?.invoke() } + socUpdateHandler.post(socRunnable!!) } else { - if (socUpdater != null) { - socUpdateHandler.removeCallbacks(socUpdater!!) - } + socRunnable?.let { socUpdateHandler.removeCallbacks(it) } } } @@ -1183,22 +1174,18 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { inputScaleSlider.apply { valueTo = 150F value = IntSetting.OVERLAY_SCALE.getInt().toFloat() - addOnChangeListener( - Slider.OnChangeListener { _, value, _ -> - inputScaleValue.text = "${value.toInt()}%" - setControlScale(value.toInt()) - } - ) + addOnChangeListener { _, value, _ -> + inputScaleValue.text = "${value.toInt()}%" + setControlScale(value.toInt()) + } } inputOpacitySlider.apply { valueTo = 100F value = IntSetting.OVERLAY_OPACITY.getInt().toFloat() - addOnChangeListener( - Slider.OnChangeListener { _, value, _ -> - inputOpacityValue.text = "${value.toInt()}%" - setControlOpacity(value.toInt()) - } - ) + addOnChangeListener { _, value, _ -> + inputOpacityValue.text = "${value.toInt()}%" + setControlOpacity(value.toInt()) + } } inputScaleValue.text = "${inputScaleSlider.value.toInt()}%" inputOpacityValue.text = "${inputOpacitySlider.value.toInt()}%"