Create audio_driver_ctl

This commit is contained in:
twinaphex 2015-11-22 14:17:46 +01:00
parent 2f8f030f85
commit 66d853358a
3 changed files with 27 additions and 12 deletions

View File

@ -503,14 +503,6 @@ void audio_driver_readjust_input_rate(void)
#endif
}
bool audio_driver_alive(void)
{
driver_t *driver = driver_get_ptr();
const audio_driver_t *audio = driver ?
(const audio_driver_t*)driver->audio : NULL;
return audio->alive(driver->audio_data);
}
bool audio_driver_start(void)
@ -857,3 +849,20 @@ void audio_driver_callback_set_state(bool state)
audio_data.audio_callback.set_state(state);
}
}
bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
{
driver_t *driver = driver_get_ptr();
const audio_driver_t *audio = driver ?
(const audio_driver_t*)driver->audio : NULL;
switch (state)
{
case RARCH_AUDIO_CTL_NONE:
break;
case RARCH_AUDIO_CTL_ALIVE:
return audio->alive(driver->audio_data);
}
return false;
}

View File

@ -72,6 +72,14 @@ typedef struct audio_driver
size_t (*buffer_size)(void *data);
} audio_driver_t;
enum rarch_audio_ctl_state
{
RARCH_AUDIO_CTL_NONE = 0,
RARCH_AUDIO_CTL_ALIVE
};
bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data);
/**
* audio_driver_find_handle:
* @index : index of driver to get handle to.
@ -99,8 +107,6 @@ bool audio_driver_mute_toggle(void);
*/
void audio_driver_readjust_input_rate(void);
bool audio_driver_alive(void);
bool audio_driver_start(void);
bool audio_driver_stop(void);

View File

@ -1303,14 +1303,14 @@ bool event_command(enum event_command cmd)
case EVENT_CMD_AUDIO_STOP:
if (!driver->audio_data)
return false;
if (!audio_driver_alive())
if (!audio_driver_ctl(RARCH_AUDIO_CTL_ALIVE, NULL))
return false;
if (!audio_driver_stop())
return false;
break;
case EVENT_CMD_AUDIO_START:
if (!driver->audio_data || audio_driver_alive())
if (!driver->audio_data || audio_driver_ctl(RARCH_AUDIO_CTL_ALIVE, NULL))
return false;
if (!settings->audio.mute_enable && !audio_driver_start())