From d49eb7faad11c700d982a4e8023404da13a2a93f Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Sun, 28 May 2023 20:05:55 -0400 Subject: [PATCH] android: Add FPS toggle --- .../yuzu_emu/fragments/EmulationFragment.kt | 36 +++++++++++++++---- .../main/res/layout/fragment_emulation.xml | 5 +-- .../main/res/menu/menu_overlay_options.xml | 5 +++ .../app/src/main/res/values/strings.xml | 1 + 4 files changed, 37 insertions(+), 10 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 1d1c1333da..a31414a0e6 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 @@ -111,19 +111,23 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } true } + R.id.menu_settings -> { SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "") true } + R.id.menu_overlay_controls -> { showOverlayOptions() true } + R.id.menu_exit -> { requireActivity().finish() emulationState.stop() true } + else -> true } } @@ -224,6 +228,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { popup.menuInflater.inflate(R.menu.menu_overlay_options, popup.menu) popup.menu.apply { + findItem(R.id.menu_toggle_fps).isChecked = EmulationMenuSettings.showFps findItem(R.id.menu_rel_stick_center).isChecked = EmulationMenuSettings.joystickRelCenter findItem(R.id.menu_dpad_slide).isChecked = EmulationMenuSettings.dpadSlide findItem(R.id.menu_show_overlay).isChecked = EmulationMenuSettings.showOverlay @@ -232,12 +237,20 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { popup.setOnMenuItemClickListener { when (it.itemId) { + R.id.menu_toggle_fps -> { + it.isChecked = !it.isChecked + EmulationMenuSettings.showFps = it.isChecked + updateShowFpsOverlay() + true + } + R.id.menu_edit_overlay -> { binding.drawerLayout.close() binding.surfaceInputOverlay.requestFocus() startConfiguringControls() true } + R.id.menu_toggle_controls -> { val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) @@ -276,32 +289,38 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } true } + R.id.menu_show_overlay -> { it.isChecked = !it.isChecked EmulationMenuSettings.showOverlay = it.isChecked refreshInputOverlay() true } + R.id.menu_rel_stick_center -> { it.isChecked = !it.isChecked EmulationMenuSettings.joystickRelCenter = it.isChecked true } + R.id.menu_dpad_slide -> { it.isChecked = !it.isChecked EmulationMenuSettings.dpadSlide = it.isChecked true } + R.id.menu_haptics -> { it.isChecked = !it.isChecked EmulationMenuSettings.hapticFeedback = it.isChecked true } + R.id.menu_reset_overlay -> { binding.drawerLayout.close() resetInputOverlay() true } + else -> true } } @@ -333,12 +352,14 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { right = cutInsets.right } - // Don't use padding if the navigation bar isn't in the way - if (InsetsHelper.getBottomPaddingRequired(requireActivity()) > 0) { - v.setPadding(left, cutInsets.top, right, 0) - } else { - v.setPadding(left, cutInsets.top, right, 0) - } + v.setPadding(left, cutInsets.top, right, 0) + + binding.showFpsText.setPadding( + cutInsets.left, + cutInsets.top, + cutInsets.right, + cutInsets.bottom + ) windowInsets } } @@ -431,6 +452,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { NativeLibrary.surfaceDestroyed() state = State.PAUSED } + State.PAUSED -> Log.warning("[EmulationFragment] Surface cleared while emulation paused.") else -> Log.warning("[EmulationFragment] Surface cleared while emulation stopped.") } @@ -448,11 +470,13 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { }, "NativeEmulation") mEmulationThread.start() } + State.PAUSED -> { Log.debug("[EmulationFragment] Resuming emulation.") NativeLibrary.surfaceChanged(surface) NativeLibrary.unPauseEmulation() } + else -> Log.debug("[EmulationFragment] Bug, run called while already running.") } state = State.RUNNING diff --git a/src/android/app/src/main/res/layout/fragment_emulation.xml b/src/android/app/src/main/res/layout/fragment_emulation.xml index 68eedffe17..648b5aaedd 100644 --- a/src/android/app/src/main/res/layout/fragment_emulation.xml +++ b/src/android/app/src/main/res/layout/fragment_emulation.xml @@ -32,11 +32,8 @@ android:id="@+id/show_fps_text" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="18dp" - android:layout_marginTop="2dp" android:clickable="false" - android:linksClickable="false" - android:longClickable="false" + android:focusable="false" android:shadowColor="@android:color/black" android:textColor="@android:color/white" android:textSize="12sp" /> diff --git a/src/android/app/src/main/res/menu/menu_overlay_options.xml b/src/android/app/src/main/res/menu/menu_overlay_options.xml index 9acc294057..09e8b79709 100644 --- a/src/android/app/src/main/res/menu/menu_overlay_options.xml +++ b/src/android/app/src/main/res/menu/menu_overlay_options.xml @@ -1,6 +1,11 @@ + + diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 87e07b5812..09b95848fc 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -183,6 +183,7 @@ Exit Emulation Done + FPS Counter Toggle Controls Relative Stick Center DPad Slide