Skip to content

Commit 5c38d8a

Browse files
committed
SNES: Don't submit silence when emulation is already running too slow.
It might help performance with audio disabled.
1 parent 5dc1d77 commit 5c38d8a

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

retro-core/main/main_snes.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,9 @@ void snes_main(void)
455455

456456
#ifdef USE_AUDIO_TASK
457457
rg_task_msg_t msg = {.type = (int)sound_enabled};
458-
rg_task_send(audio_task_handle, &msg);
458+
// Don't submit silence if we're already behind. This might help reduce slowdowns?
459+
if (sound_enabled || rg_system_timer() - startTime < app->frameTime)
460+
rg_task_send(audio_task_handle, &msg);
459461
#endif
460462

461463
if (drawFrame)
@@ -465,13 +467,14 @@ void snes_main(void)
465467
currentUpdate = updates[currentUpdate == updates[0]];
466468
}
467469

468-
#ifndef USE_AUDIO_TASK
469-
if (sound_enabled)
470-
mix_samples(AUDIO_BUFFER_LENGTH << 1);
470+
#ifdef USE_AUDIO_TASK
471471
rg_system_tick(rg_system_timer() - startTime);
472-
rg_audio_submit(currentAudioBuffer, AUDIO_BUFFER_LENGTH);
473472
#else
473+
// Don't submit silence if we're already behind. This might help reduce slowdowns?
474+
if (sound_enabled || rg_system_timer() - startTime < app->frameTime)
475+
mix_samples(AUDIO_BUFFER_LENGTH << 1);
474476
rg_system_tick(rg_system_timer() - startTime);
477+
rg_audio_submit(currentAudioBuffer, AUDIO_BUFFER_LENGTH);
475478
#endif
476479

477480
if (skipFrames == 0)

0 commit comments

Comments
 (0)