android: Add FPS toggle

This commit is contained in:
Charles Lombardo 2023-05-28 20:05:55 -04:00 committed by bunnei
parent be6159842a
commit d49eb7faad
4 changed files with 37 additions and 10 deletions

View File

@ -111,19 +111,23 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
} }
true true
} }
R.id.menu_settings -> { R.id.menu_settings -> {
SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "") SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "")
true true
} }
R.id.menu_overlay_controls -> { R.id.menu_overlay_controls -> {
showOverlayOptions() showOverlayOptions()
true true
} }
R.id.menu_exit -> { R.id.menu_exit -> {
requireActivity().finish() requireActivity().finish()
emulationState.stop() emulationState.stop()
true true
} }
else -> true else -> true
} }
} }
@ -224,6 +228,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
popup.menuInflater.inflate(R.menu.menu_overlay_options, popup.menu) popup.menuInflater.inflate(R.menu.menu_overlay_options, popup.menu)
popup.menu.apply { 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_rel_stick_center).isChecked = EmulationMenuSettings.joystickRelCenter
findItem(R.id.menu_dpad_slide).isChecked = EmulationMenuSettings.dpadSlide findItem(R.id.menu_dpad_slide).isChecked = EmulationMenuSettings.dpadSlide
findItem(R.id.menu_show_overlay).isChecked = EmulationMenuSettings.showOverlay findItem(R.id.menu_show_overlay).isChecked = EmulationMenuSettings.showOverlay
@ -232,12 +237,20 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
popup.setOnMenuItemClickListener { popup.setOnMenuItemClickListener {
when (it.itemId) { when (it.itemId) {
R.id.menu_toggle_fps -> {
it.isChecked = !it.isChecked
EmulationMenuSettings.showFps = it.isChecked
updateShowFpsOverlay()
true
}
R.id.menu_edit_overlay -> { R.id.menu_edit_overlay -> {
binding.drawerLayout.close() binding.drawerLayout.close()
binding.surfaceInputOverlay.requestFocus() binding.surfaceInputOverlay.requestFocus()
startConfiguringControls() startConfiguringControls()
true true
} }
R.id.menu_toggle_controls -> { R.id.menu_toggle_controls -> {
val preferences = val preferences =
PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
@ -276,32 +289,38 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
} }
true true
} }
R.id.menu_show_overlay -> { R.id.menu_show_overlay -> {
it.isChecked = !it.isChecked it.isChecked = !it.isChecked
EmulationMenuSettings.showOverlay = it.isChecked EmulationMenuSettings.showOverlay = it.isChecked
refreshInputOverlay() refreshInputOverlay()
true true
} }
R.id.menu_rel_stick_center -> { R.id.menu_rel_stick_center -> {
it.isChecked = !it.isChecked it.isChecked = !it.isChecked
EmulationMenuSettings.joystickRelCenter = it.isChecked EmulationMenuSettings.joystickRelCenter = it.isChecked
true true
} }
R.id.menu_dpad_slide -> { R.id.menu_dpad_slide -> {
it.isChecked = !it.isChecked it.isChecked = !it.isChecked
EmulationMenuSettings.dpadSlide = it.isChecked EmulationMenuSettings.dpadSlide = it.isChecked
true true
} }
R.id.menu_haptics -> { R.id.menu_haptics -> {
it.isChecked = !it.isChecked it.isChecked = !it.isChecked
EmulationMenuSettings.hapticFeedback = it.isChecked EmulationMenuSettings.hapticFeedback = it.isChecked
true true
} }
R.id.menu_reset_overlay -> { R.id.menu_reset_overlay -> {
binding.drawerLayout.close() binding.drawerLayout.close()
resetInputOverlay() resetInputOverlay()
true true
} }
else -> true else -> true
} }
} }
@ -333,12 +352,14 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
right = cutInsets.right right = cutInsets.right
} }
// Don't use padding if the navigation bar isn't in the way v.setPadding(left, cutInsets.top, right, 0)
if (InsetsHelper.getBottomPaddingRequired(requireActivity()) > 0) {
v.setPadding(left, cutInsets.top, right, 0) binding.showFpsText.setPadding(
} else { cutInsets.left,
v.setPadding(left, cutInsets.top, right, 0) cutInsets.top,
} cutInsets.right,
cutInsets.bottom
)
windowInsets windowInsets
} }
} }
@ -431,6 +452,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
NativeLibrary.surfaceDestroyed() NativeLibrary.surfaceDestroyed()
state = State.PAUSED state = State.PAUSED
} }
State.PAUSED -> Log.warning("[EmulationFragment] Surface cleared while emulation paused.") State.PAUSED -> Log.warning("[EmulationFragment] Surface cleared while emulation paused.")
else -> Log.warning("[EmulationFragment] Surface cleared while emulation stopped.") else -> Log.warning("[EmulationFragment] Surface cleared while emulation stopped.")
} }
@ -448,11 +470,13 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}, "NativeEmulation") }, "NativeEmulation")
mEmulationThread.start() mEmulationThread.start()
} }
State.PAUSED -> { State.PAUSED -> {
Log.debug("[EmulationFragment] Resuming emulation.") Log.debug("[EmulationFragment] Resuming emulation.")
NativeLibrary.surfaceChanged(surface) NativeLibrary.surfaceChanged(surface)
NativeLibrary.unPauseEmulation() NativeLibrary.unPauseEmulation()
} }
else -> Log.debug("[EmulationFragment] Bug, run called while already running.") else -> Log.debug("[EmulationFragment] Bug, run called while already running.")
} }
state = State.RUNNING state = State.RUNNING

View File

@ -32,11 +32,8 @@
android:id="@+id/show_fps_text" android:id="@+id/show_fps_text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="18dp"
android:layout_marginTop="2dp"
android:clickable="false" android:clickable="false"
android:linksClickable="false" android:focusable="false"
android:longClickable="false"
android:shadowColor="@android:color/black" android:shadowColor="@android:color/black"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="12sp" /> android:textSize="12sp" />

View File

@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_toggle_fps"
android:title="@string/emulation_fps_counter"
android:checkable="true" />
<item <item
android:id="@+id/menu_edit_overlay" android:id="@+id/menu_edit_overlay"
android:title="@string/emulation_touch_overlay_edit" /> android:title="@string/emulation_touch_overlay_edit" />

View File

@ -183,6 +183,7 @@
<!-- Emulation Menu --> <!-- Emulation Menu -->
<string name="emulation_exit">Exit Emulation</string> <string name="emulation_exit">Exit Emulation</string>
<string name="emulation_done">Done</string> <string name="emulation_done">Done</string>
<string name="emulation_fps_counter">FPS Counter</string>
<string name="emulation_toggle_controls">Toggle Controls</string> <string name="emulation_toggle_controls">Toggle Controls</string>
<string name="emulation_rel_stick_center">Relative Stick Center</string> <string name="emulation_rel_stick_center">Relative Stick Center</string>
<string name="emulation_dpad_slide">DPad Slide</string> <string name="emulation_dpad_slide">DPad Slide</string>