Start simplifying audio driver start/stop

This commit is contained in:
twinaphex 2017-04-18 03:49:35 +02:00
parent 4159dc43ed
commit 662755c899
2 changed files with 25 additions and 27 deletions

View file

@ -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. */

View file

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