System: Add a new throttler/pacer which can catch up on lost time

This can result in worse frame pacing, so if you have a decent machine
you'll probably want to turn on "display all frames" in display
settings.

But, it's sadly needed for Android.
This commit is contained in:
Connor McLaughlin
2021-01-28 20:20:15 +10:00
parent 4e583890ea
commit 4bb3fb48f9
14 changed files with 111 additions and 42 deletions

View File

@ -452,7 +452,10 @@ void AndroidHostInterface::EmulationThreadLoop(JNIEnv* env)
// simulate the system if not paused
if (System::IsRunning())
{
System::RunFrame();
if (m_throttler_enabled)
System::RunFrames();
else
System::RunFrame();
if (m_vibration_enabled)
UpdateVibration();

View File

@ -200,4 +200,6 @@
<string name="settings_summary_game_directories">Change the list of directories used to search for games.</string>
<string name="game_directories_scanning_subdirectories">Scanning subdirectories.</string>
<string name="game_directories_not_scanning_subdirectories">Not scanning subdirectories.</string>
<string name="settings_display_all_frames">Display All Frames</string>
<string name="settings_summary_display_all_frames">Enable this option will ensure every frame the console renders is displayed to the screen, for optimal frame pacing. If you are having difficulties maintaining full speed, or are getting audio glitches, try disabling this option.</string>
</resources>

View File

@ -94,6 +94,12 @@
app:defaultValue="MMap"
app:summary="@string/settings_summary_cpu_recompiler_fastmem"
app:iconSpaceReserved="false" />
<SwitchPreferenceCompat
app:key="Display/DisplayAllFrames"
app:title="@string/settings_display_all_frames"
app:defaultValue="false"
app:summary="@string/settings_summary_display_all_frames"
app:iconSpaceReserved="false" />
<ListPreference
app:key="Display/MaxFPS"
app:title="@string/settings_presented_frame_limit"