SDL: Remove unnecessary sleeps in the SDLMain loop (we now handle it in NativeFrame)

This commit is contained in:
Henrik Rydgård 2024-01-27 11:30:29 +01:00
parent 437dbe4989
commit cb89dff10f
2 changed files with 5 additions and 15 deletions

View File

@ -675,17 +675,7 @@ static void EmuThreadFunc(GraphicsContext *graphicsContext) {
NativeInitGraphics(graphicsContext);
while (emuThreadState != (int)EmuThreadState::QUIT_REQUESTED) {
double startTime = time_now_d();
UpdateRunLoop(graphicsContext);
// Simple throttling to not burn the GPU in the menu.
if (GetUIState() != UISTATE_INGAME || !PSP_IsInited()) {
double diffTime = time_now_d() - startTime;
int sleepTime = (int)(1000.0 / 60.0) - (int)(diffTime * 1000.0);
if (sleepTime > 0)
sleep_ms(sleepTime);
}
}
emuThreadState = (int)EmuThreadState::STOPPED;
graphicsContext->StopThread();

View File

@ -1176,7 +1176,12 @@ void NativeFrame(GraphicsContext *graphicsContext) {
graphicsContext->Poll();
}
SendMouseDeltaAxis();
if (!(renderFlags & ScreenRenderFlags::HANDLED_THROTTLING)) {
// TODO: We should ideally mix this with game audio.
g_BackgroundAudio.Play();
float refreshRate = System_GetPropertyFloat(SYSPROP_DISPLAY_REFRESH_RATE);
// Simple throttling to not burn the GPU in the menu.
// TODO: This should move into NativeFrame. Also, it's only necessary in MAILBOX or IMMEDIATE presentation modes.
@ -1184,12 +1189,7 @@ void NativeFrame(GraphicsContext *graphicsContext) {
int sleepTime = (int)(1000.0 / refreshRate) - (int)(diffTime * 1000.0);
if (sleepTime > 0)
sleep_ms(sleepTime);
// TODO: We should ideally mix this with game audio.
g_BackgroundAudio.Play();
}
SendMouseDeltaAxis();
}
bool HandleGlobalMessage(UIMessage message, const std::string &value) {