diff --git a/audio/audio_driver.c b/audio/audio_driver.c index aaab9e1dec..4ca9274596 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -917,6 +917,26 @@ bool audio_driver_has_callback(void) return audio_callback.callback; } +bool audio_driver_toggle_mute(void) +{ + settings_t *settings = config_get_ptr(); + if (!audio_driver_context_audio_data) + return false; + if (!audio_driver_ctl(RARCH_AUDIO_CTL_IS_ACTIVE, NULL)) + return false; + + settings->audio.mute_enable = !settings->audio.mute_enable; + + if (settings->audio.mute_enable) + event_cmd_ctl(EVENT_CMD_AUDIO_STOP, NULL); + else if (!event_cmd_ctl(EVENT_CMD_AUDIO_START, NULL)) + { + audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_ACTIVE, NULL); + return false; + } + return true; +} + bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data) { settings_t *settings = config_get_ptr(); @@ -935,22 +955,6 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data) audio_callback.callback = NULL; audio_callback.set_state = NULL; break; - case RARCH_AUDIO_CTL_MUTE_TOGGLE: - if (!audio_driver_context_audio_data) - return false; - if (!audio_driver_ctl(RARCH_AUDIO_CTL_IS_ACTIVE, NULL)) - return false; - - settings->audio.mute_enable = !settings->audio.mute_enable; - - if (settings->audio.mute_enable) - event_cmd_ctl(EVENT_CMD_AUDIO_STOP, NULL); - else if (!event_cmd_ctl(EVENT_CMD_AUDIO_START, NULL)) - { - audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_ACTIVE, NULL); - return false; - } - break; case RARCH_AUDIO_CTL_ALIVE: if (!current_audio || !current_audio->alive || !audio_driver_context_audio_data) diff --git a/audio/audio_driver.h b/audio/audio_driver.h index 86a2197959..2a26b03dfa 100644 --- a/audio/audio_driver.h +++ b/audio/audio_driver.h @@ -45,7 +45,6 @@ enum rarch_audio_ctl_state RARCH_AUDIO_CTL_DESTROY_DATA, RARCH_AUDIO_CTL_START, RARCH_AUDIO_CTL_STOP, - RARCH_AUDIO_CTL_MUTE_TOGGLE, RARCH_AUDIO_CTL_UNSET_CALLBACK, RARCH_AUDIO_CTL_ALIVE, RARCH_AUDIO_CTL_FRAME_IS_REVERSE, @@ -187,6 +186,8 @@ void audio_driver_monitor_set_rate(void); bool audio_driver_find_driver(void); +bool audio_driver_toggle_mute(void); + bool audio_driver_deinit(void); bool audio_driver_init(void); diff --git a/command_event.c b/command_event.c index b91f71b738..a454ba701e 100644 --- a/command_event.c +++ b/command_event.c @@ -1235,7 +1235,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data) msg_hash_to_str(MSG_AUDIO_MUTED): msg_hash_to_str(MSG_AUDIO_UNMUTED); - if (!audio_driver_ctl(RARCH_AUDIO_CTL_MUTE_TOGGLE, NULL)) + if (!audio_driver_toggle_mute()) { RARCH_ERR("%s.\n", msg_hash_to_str(MSG_FAILED_TO_UNMUTE_AUDIO));