Create audio_driver_toggle_mute

This commit is contained in:
twinaphex 2016-05-08 17:42:20 +02:00
parent ca79faa4ed
commit 518a83b2c3
3 changed files with 23 additions and 18 deletions

View File

@ -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)

View File

@ -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);

View File

@ -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));