1
0
mirror of https://github.com/libretro/RetroArch synced 2025-03-28 08:37:41 +00:00

Add more RARCH_AUDIO_CTL commands

This commit is contained in:
twinaphex 2015-11-22 14:23:29 +01:00
parent 66d853358a
commit 0972c19f77
3 changed files with 10 additions and 24 deletions

@ -436,12 +436,10 @@ void init_audio(void)
audio_data.buffer_free_samples_count = 0; audio_data.buffer_free_samples_count = 0;
/* Threaded driver is initially stopped. */
if (driver->audio_active && !settings->audio.mute_enable && if (driver->audio_active && !settings->audio.mute_enable &&
audio_data.audio_callback.callback) audio_data.audio_callback.callback)
{ audio_driver_ctl(RARCH_AUDIO_CTL_START, NULL);
/* Threaded driver is initially stopped. */
driver->audio->start(driver->audio_data);
}
return; return;
@ -505,21 +503,7 @@ void audio_driver_readjust_input_rate(void)
bool audio_driver_start(void)
{
driver_t *driver = driver_get_ptr();
const audio_driver_t *audio = audio_get_ptr(driver);
return audio->start(driver->audio_data);
}
bool audio_driver_stop(void)
{
driver_t *driver = driver_get_ptr();
const audio_driver_t *audio = audio_get_ptr(driver);
return audio->stop(driver->audio_data);
}
void audio_driver_set_nonblock_state(bool toggle) void audio_driver_set_nonblock_state(bool toggle)
{ {
@ -862,6 +846,10 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
break; break;
case RARCH_AUDIO_CTL_ALIVE: case RARCH_AUDIO_CTL_ALIVE:
return audio->alive(driver->audio_data); return audio->alive(driver->audio_data);
case RARCH_AUDIO_CTL_START:
return audio->start(driver->audio_data);
case RARCH_AUDIO_CTL_STOP:
return audio->stop(driver->audio_data);
} }
return false; return false;

@ -75,6 +75,8 @@ typedef struct audio_driver
enum rarch_audio_ctl_state enum rarch_audio_ctl_state
{ {
RARCH_AUDIO_CTL_NONE = 0, RARCH_AUDIO_CTL_NONE = 0,
RARCH_AUDIO_CTL_START,
RARCH_AUDIO_CTL_STOP,
RARCH_AUDIO_CTL_ALIVE RARCH_AUDIO_CTL_ALIVE
}; };
@ -107,10 +109,6 @@ bool audio_driver_mute_toggle(void);
*/ */
void audio_driver_readjust_input_rate(void); void audio_driver_readjust_input_rate(void);
bool audio_driver_start(void);
bool audio_driver_stop(void);
void audio_driver_set_nonblock_state(bool toggle); void audio_driver_set_nonblock_state(bool toggle);
void audio_driver_set_nonblocking_state(bool enable); void audio_driver_set_nonblocking_state(bool enable);

@ -1306,14 +1306,14 @@ bool event_command(enum event_command cmd)
if (!audio_driver_ctl(RARCH_AUDIO_CTL_ALIVE, NULL)) if (!audio_driver_ctl(RARCH_AUDIO_CTL_ALIVE, NULL))
return false; return false;
if (!audio_driver_stop()) if (!audio_driver_ctl(RARCH_AUDIO_CTL_STOP, NULL))
return false; return false;
break; break;
case EVENT_CMD_AUDIO_START: case EVENT_CMD_AUDIO_START:
if (!driver->audio_data || audio_driver_ctl(RARCH_AUDIO_CTL_ALIVE, NULL)) if (!driver->audio_data || audio_driver_ctl(RARCH_AUDIO_CTL_ALIVE, NULL))
return false; return false;
if (!settings->audio.mute_enable && !audio_driver_start()) if (!settings->audio.mute_enable && !audio_driver_ctl(RARCH_AUDIO_CTL_START, NULL))
{ {
RARCH_ERR("Failed to start audio driver. Will continue without audio.\n"); RARCH_ERR("Failed to start audio driver. Will continue without audio.\n");
driver->audio_active = false; driver->audio_active = false;