diff --git a/audio/audio_driver.c b/audio/audio_driver.c index 5c27676b6a..66205bc53d 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -975,24 +975,15 @@ bool audio_driver_toggle_mute(void) bool audio_driver_start(bool is_shutdown) { + settings_t *settings = config_get_ptr(); if (!current_audio || !current_audio->start || !audio_driver_context_audio_data) return false; - return current_audio->start(audio_driver_context_audio_data, is_shutdown); -} - -bool audio_driver_stop(void) -{ - if (!current_audio || !current_audio->stop - || !audio_driver_context_audio_data) + if (audio_driver_alive()) return false; - return current_audio->stop(audio_driver_context_audio_data); -} - -void audio_driver_unset_callback(void) -{ - audio_callback.callback = NULL; - audio_callback.set_state = NULL; + if (!settings || settings->audio.mute_enable) + return false; + return current_audio->start(audio_driver_context_audio_data, is_shutdown); } bool audio_driver_alive(void) @@ -1004,6 +995,22 @@ bool audio_driver_alive(void) return false; } +bool audio_driver_stop(void) +{ + if (!current_audio || !current_audio->stop + || !audio_driver_context_audio_data) + return false; + if (!audio_driver_alive()) + return false; + return current_audio->stop(audio_driver_context_audio_data); +} + +void audio_driver_unset_callback(void) +{ + audio_callback.callback = NULL; + audio_callback.set_state = NULL; +} + void audio_driver_frame_is_reverse(void) { /* We just rewound. Flush rewind audio buffer. */ diff --git a/command.c b/command.c index 8d39410e70..3d99290183 100644 --- a/command.c +++ b/command.c @@ -2076,24 +2076,15 @@ bool command_event(enum event_command cmd, void *data) command_event_save_auto_state(); break; case CMD_EVENT_AUDIO_STOP: - if (!audio_driver_alive()) - return false; - if (!audio_driver_stop()) return false; break; case CMD_EVENT_AUDIO_START: + if (!audio_driver_start(runloop_ctl(RUNLOOP_CTL_IS_SHUTDOWN, NULL))) { - settings_t *settings = config_get_ptr(); - if (audio_driver_alive()) - return false; - - if (settings && !settings->audio.mute_enable && !audio_driver_start(runloop_ctl(RUNLOOP_CTL_IS_SHUTDOWN, NULL))) - { - RARCH_ERR("%s\n", - msg_hash_to_str(MSG_FAILED_TO_START_AUDIO_DRIVER)); - audio_driver_unset_active(); - } + RARCH_ERR("%s\n", + msg_hash_to_str(MSG_FAILED_TO_START_AUDIO_DRIVER)); + audio_driver_unset_active(); } break; case CMD_EVENT_AUDIO_MUTE_TOGGLE: