(audio driver) Refactors

This commit is contained in:
twinaphex 2016-05-08 16:50:23 +02:00
parent 9dc3326d0e
commit 13998f583a
4 changed files with 31 additions and 24 deletions

View File

@ -342,7 +342,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
return false; return false;
} }
audio_driver_ctl(RARCH_AUDIO_CTL_FIND_DRIVER, NULL); audio_driver_find_driver();
#ifdef HAVE_THREADS #ifdef HAVE_THREADS
if (audio_cb_inited) if (audio_cb_inited)
{ {
@ -748,7 +748,7 @@ void audio_driver_setup_rewind(void)
audio_driver_data.data_ptr = 0; audio_driver_data.data_ptr = 0;
} }
static bool find_audio_driver(void) bool audio_driver_find_driver(void)
{ {
int i; int i;
driver_ctx_info_t drv; driver_ctx_info_t drv;
@ -776,7 +776,7 @@ static bool find_audio_driver(void)
current_audio = (const audio_driver_t*)audio_driver_find_handle(0); current_audio = (const audio_driver_t*)audio_driver_find_handle(0);
if (!current_audio) if (!current_audio)
retro_fail(1, "find_audio_driver()"); retro_fail(1, "audio_driver_find()");
} }
return true; return true;
@ -872,6 +872,25 @@ bool audio_driver_set_callback(const void *data)
return true; return true;
} }
bool audio_driver_enable_callback(void)
{
if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL))
return false;
if (audio_callback.set_state)
audio_callback.set_state(true);
return true;
}
bool audio_driver_disable_callback(void)
{
if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL))
return false;
if (audio_callback.set_state)
audio_callback.set_state(false);
return true;
}
bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data) bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
@ -886,19 +905,6 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
case RARCH_AUDIO_CTL_DESTROY_DATA: case RARCH_AUDIO_CTL_DESTROY_DATA:
audio_driver_context_audio_data = NULL; audio_driver_context_audio_data = NULL;
break; break;
case RARCH_AUDIO_CTL_SET_CALLBACK_ENABLE:
if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL))
return false;
if (audio_callback.set_state)
audio_callback.set_state(true);
break;
case RARCH_AUDIO_CTL_SET_CALLBACK_DISABLE:
if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL))
return false;
if (audio_callback.set_state)
audio_callback.set_state(false);
break;
case RARCH_AUDIO_CTL_HAS_CALLBACK: case RARCH_AUDIO_CTL_HAS_CALLBACK:
return audio_callback.callback; return audio_callback.callback;
case RARCH_AUDIO_CTL_CALLBACK: case RARCH_AUDIO_CTL_CALLBACK:
@ -955,8 +961,6 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
|| !audio_driver_context_audio_data) || !audio_driver_context_audio_data)
return false; return false;
return current_audio->stop(audio_driver_context_audio_data); return current_audio->stop(audio_driver_context_audio_data);
case RARCH_AUDIO_CTL_FIND_DRIVER:
return find_audio_driver();
case RARCH_AUDIO_CTL_SET_OWN_DRIVER: case RARCH_AUDIO_CTL_SET_OWN_DRIVER:
audio_driver_data_own = true; audio_driver_data_own = true;
break; break;

View File

@ -45,13 +45,10 @@ enum rarch_audio_ctl_state
RARCH_AUDIO_CTL_DESTROY_DATA, RARCH_AUDIO_CTL_DESTROY_DATA,
RARCH_AUDIO_CTL_START, RARCH_AUDIO_CTL_START,
RARCH_AUDIO_CTL_STOP, RARCH_AUDIO_CTL_STOP,
RARCH_AUDIO_CTL_FIND_DRIVER,
/* Sets audio monitor refresh rate to new value. */ /* Sets audio monitor refresh rate to new value. */
RARCH_AUDIO_CTL_MONITOR_SET_REFRESH_RATE, RARCH_AUDIO_CTL_MONITOR_SET_REFRESH_RATE,
RARCH_AUDIO_CTL_MONITOR_ADJUST_SYSTEM_RATES, RARCH_AUDIO_CTL_MONITOR_ADJUST_SYSTEM_RATES,
RARCH_AUDIO_CTL_MUTE_TOGGLE, RARCH_AUDIO_CTL_MUTE_TOGGLE,
RARCH_AUDIO_CTL_SET_CALLBACK_ENABLE,
RARCH_AUDIO_CTL_SET_CALLBACK_DISABLE,
RARCH_AUDIO_CTL_UNSET_CALLBACK, RARCH_AUDIO_CTL_UNSET_CALLBACK,
RARCH_AUDIO_CTL_CALLBACK, RARCH_AUDIO_CTL_CALLBACK,
RARCH_AUDIO_CTL_HAS_CALLBACK, RARCH_AUDIO_CTL_HAS_CALLBACK,
@ -129,6 +126,10 @@ bool audio_driver_free_devices_list(void);
bool audio_driver_new_devices_list(void); bool audio_driver_new_devices_list(void);
bool audio_driver_enable_callback(void);
bool audio_driver_disable_callback(void);
/** /**
* audio_driver_find_handle: * audio_driver_find_handle:
* @index : index of driver to get handle to. * @index : index of driver to get handle to.
@ -180,6 +181,8 @@ void audio_driver_setup_rewind(void);
bool audio_driver_set_callback(const void *data); bool audio_driver_set_callback(const void *data);
bool audio_driver_find_driver(void);
bool audio_driver_deinit(void); bool audio_driver_deinit(void);
bool audio_driver_init(void); bool audio_driver_init(void);

View File

@ -190,7 +190,7 @@ static bool audio_thread_stop(void *data)
audio_thread_block(thr); audio_thread_block(thr);
thr->is_paused = true; thr->is_paused = true;
audio_driver_ctl(RARCH_AUDIO_CTL_SET_CALLBACK_DISABLE, NULL); audio_driver_disable_callback();
return true; return true;
} }
@ -202,7 +202,7 @@ static bool audio_thread_start(void *data)
if (!thr) if (!thr)
return false; return false;
audio_driver_ctl(RARCH_AUDIO_CTL_SET_CALLBACK_ENABLE, NULL); audio_driver_enable_callback();
thr->is_paused = false; thr->is_paused = false;
audio_thread_unblock(thr); audio_thread_unblock(thr);

View File

@ -464,7 +464,7 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
return driver_ctl(RARCH_DRIVER_CTL_INIT, &flags); return driver_ctl(RARCH_DRIVER_CTL_INIT, &flags);
} }
case RARCH_DRIVER_CTL_INIT_PRE: case RARCH_DRIVER_CTL_INIT_PRE:
audio_driver_ctl(RARCH_AUDIO_CTL_FIND_DRIVER, NULL); audio_driver_find_driver();
video_driver_find_driver(); video_driver_find_driver();
input_driver_ctl(RARCH_INPUT_CTL_FIND_DRIVER, NULL); input_driver_ctl(RARCH_INPUT_CTL_FIND_DRIVER, NULL);
camera_driver_ctl(RARCH_CAMERA_CTL_FIND_DRIVER, NULL); camera_driver_ctl(RARCH_CAMERA_CTL_FIND_DRIVER, NULL);