Menu sounds fixes (#15384)

This commit is contained in:
sonninnos 2023-06-15 22:36:20 +03:00 committed by GitHub
parent 410242c164
commit 610207dcfd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 2 deletions

View file

@ -1338,9 +1338,10 @@ static void audio_driver_mixer_play_stream_internal(
static void audio_driver_load_menu_bgm_callback(retro_task_t *task,
void *task_data, void *user_data, const char *error)
{
uint8_t flags = content_get_flags();
if (!(flags & CONTENT_ST_FLAG_IS_INITED))
#if defined(HAVE_AUDIOMIXER) && defined(HAVE_MENU)
if (menu_state_get_ptr()->flags & MENU_ST_FLAG_ALIVE)
audio_driver_mixer_play_menu_sound_looped(AUDIO_MIXER_SYSTEM_SLOT_BGM);
#endif
}
void audio_driver_load_system_sounds(void)
@ -1460,6 +1461,7 @@ void audio_driver_load_system_sounds(void)
if (path_down)
task_push_audio_mixer_load(path_down, NULL, NULL, true, AUDIO_MIXER_SLOT_SELECTION_MANUAL, AUDIO_MIXER_SYSTEM_SLOT_DOWN);
}
end:
if (list)
string_list_free(list);

View file

@ -2958,10 +2958,20 @@ bool command_event(enum event_command cmd, void *data)
break;
case CMD_EVENT_AUDIO_STOP:
midi_driver_set_all_sounds_off();
#if defined(HAVE_AUDIOMIXER) && defined(HAVE_MENU)
if ( settings->bools.audio_enable_menu
&& menu_state_get_ptr()->flags & MENU_ST_FLAG_ALIVE)
return false;
#endif
if (!audio_driver_stop())
return false;
break;
case CMD_EVENT_AUDIO_START:
#if defined(HAVE_AUDIOMIXER) && defined(HAVE_MENU)
if ( settings->bools.audio_enable_menu
&& menu_state_get_ptr()->flags & MENU_ST_FLAG_ALIVE)
return false;
#endif
if (!audio_driver_start(runloop_st->flags &
RUNLOOP_FLAG_SHUTDOWN_INITIATED))
return false;
@ -3931,6 +3941,13 @@ bool command_event(enum event_command cmd, void *data)
video_st->flags &= ~VIDEO_FLAG_IS_SWITCHING_DISPLAY_MODE;
audio_st->flags &= ~AUDIO_FLAG_SUSPENDED;
#if defined(HAVE_AUDIOMIXER) && defined(HAVE_MENU)
/* Menu sounds require audio reinit. */
if ( settings->bools.audio_enable_menu
&& menu_st->flags & MENU_ST_FLAG_ALIVE)
command_event(CMD_EVENT_AUDIO_REINIT, NULL);
#endif
if (userdata && *userdata == true)
video_driver_cached_frame();
}