mirror of
https://github.com/libretro/RetroArch
synced 2025-04-09 21:45:45 +00:00
Get rid of audio_driver_ctl
This commit is contained in:
parent
4791c37039
commit
807b5c6325
@ -283,7 +283,7 @@ static bool uninit_audio(void)
|
|||||||
|
|
||||||
if (!settings->audio.enable)
|
if (!settings->audio.enable)
|
||||||
{
|
{
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_ACTIVE, NULL);
|
audio_driver_unset_active();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,7 +338,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
|
|||||||
|
|
||||||
if (!settings->audio.enable)
|
if (!settings->audio.enable)
|
||||||
{
|
{
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_ACTIVE, NULL);
|
audio_driver_unset_active();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -370,15 +370,15 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
|
|||||||
if (!audio_driver_context_audio_data)
|
if (!audio_driver_context_audio_data)
|
||||||
{
|
{
|
||||||
RARCH_ERR("Failed to initialize audio driver. Will continue without audio.\n");
|
RARCH_ERR("Failed to initialize audio driver. Will continue without audio.\n");
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_ACTIVE, NULL);
|
audio_driver_unset_active();
|
||||||
}
|
}
|
||||||
|
|
||||||
audio_driver_data.use_float = false;
|
audio_driver_data.use_float = false;
|
||||||
if ( audio_driver_ctl(RARCH_AUDIO_CTL_IS_ACTIVE, NULL)
|
if ( audio_driver_is_active()
|
||||||
&& current_audio->use_float(audio_driver_context_audio_data))
|
&& current_audio->use_float(audio_driver_context_audio_data))
|
||||||
audio_driver_data.use_float = true;
|
audio_driver_data.use_float = true;
|
||||||
|
|
||||||
if (!settings->audio.sync && audio_driver_ctl(RARCH_AUDIO_CTL_IS_ACTIVE, NULL))
|
if (!settings->audio.sync && audio_driver_is_active())
|
||||||
{
|
{
|
||||||
event_cmd_ctl(EVENT_CMD_AUDIO_SET_NONBLOCKING_STATE, NULL);
|
event_cmd_ctl(EVENT_CMD_AUDIO_SET_NONBLOCKING_STATE, NULL);
|
||||||
audio_driver_data.chunk.size = audio_driver_data.chunk.nonblock_size;
|
audio_driver_data.chunk.size = audio_driver_data.chunk.nonblock_size;
|
||||||
@ -400,7 +400,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
|
|||||||
{
|
{
|
||||||
RARCH_ERR("Failed to initialize resampler \"%s\".\n",
|
RARCH_ERR("Failed to initialize resampler \"%s\".\n",
|
||||||
settings->audio.resampler);
|
settings->audio.resampler);
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_ACTIVE, NULL);
|
audio_driver_unset_active();
|
||||||
}
|
}
|
||||||
|
|
||||||
retro_assert(audio_driver_data.data = (float*)
|
retro_assert(audio_driver_data.data = (float*)
|
||||||
@ -422,7 +422,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
|
|||||||
audio_driver_data.audio_rate.control = false;
|
audio_driver_data.audio_rate.control = false;
|
||||||
if (
|
if (
|
||||||
!audio_cb_inited
|
!audio_cb_inited
|
||||||
&& audio_driver_ctl(RARCH_AUDIO_CTL_IS_ACTIVE, NULL)
|
&& audio_driver_is_active()
|
||||||
&& settings->audio.rate_control
|
&& settings->audio.rate_control
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -444,7 +444,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
|
|||||||
|
|
||||||
/* Threaded driver is initially stopped. */
|
/* Threaded driver is initially stopped. */
|
||||||
if (
|
if (
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_IS_ACTIVE, NULL)
|
audio_driver_is_active()
|
||||||
&& !settings->audio.mute_enable
|
&& !settings->audio.mute_enable
|
||||||
&& audio_cb_inited
|
&& audio_cb_inited
|
||||||
)
|
)
|
||||||
@ -493,7 +493,7 @@ void audio_driver_set_nonblocking_state(bool enable)
|
|||||||
{
|
{
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
if (
|
if (
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_IS_ACTIVE, NULL)
|
audio_driver_is_active()
|
||||||
&& audio_driver_context_audio_data
|
&& audio_driver_context_audio_data
|
||||||
)
|
)
|
||||||
current_audio->set_nonblock_state(audio_driver_context_audio_data,
|
current_audio->set_nonblock_state(audio_driver_context_audio_data,
|
||||||
@ -531,7 +531,7 @@ static bool audio_driver_flush(const int16_t *data, size_t samples)
|
|||||||
|
|
||||||
if (runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL) || settings->audio.mute_enable)
|
if (runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL) || settings->audio.mute_enable)
|
||||||
return true;
|
return true;
|
||||||
if (!audio_driver_ctl(RARCH_AUDIO_CTL_IS_ACTIVE, NULL))
|
if (!audio_driver_is_active())
|
||||||
return false;
|
return false;
|
||||||
if (!audio_driver_data.data)
|
if (!audio_driver_data.data)
|
||||||
return false;
|
return false;
|
||||||
@ -592,7 +592,7 @@ static bool audio_driver_flush(const int16_t *data, size_t samples)
|
|||||||
if (current_audio->write(audio_driver_context_audio_data,
|
if (current_audio->write(audio_driver_context_audio_data,
|
||||||
output_data, output_frames * output_size * 2) < 0)
|
output_data, output_frames * output_size * 2) < 0)
|
||||||
{
|
{
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_ACTIVE, NULL);
|
audio_driver_unset_active();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -922,7 +922,7 @@ bool audio_driver_toggle_mute(void)
|
|||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
if (!audio_driver_context_audio_data)
|
if (!audio_driver_context_audio_data)
|
||||||
return false;
|
return false;
|
||||||
if (!audio_driver_ctl(RARCH_AUDIO_CTL_IS_ACTIVE, NULL))
|
if (!audio_driver_is_active())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
settings->audio.mute_enable = !settings->audio.mute_enable;
|
settings->audio.mute_enable = !settings->audio.mute_enable;
|
||||||
@ -931,7 +931,7 @@ bool audio_driver_toggle_mute(void)
|
|||||||
event_cmd_ctl(EVENT_CMD_AUDIO_STOP, NULL);
|
event_cmd_ctl(EVENT_CMD_AUDIO_STOP, NULL);
|
||||||
else if (!event_cmd_ctl(EVENT_CMD_AUDIO_START, NULL))
|
else if (!event_cmd_ctl(EVENT_CMD_AUDIO_START, NULL))
|
||||||
{
|
{
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_ACTIVE, NULL);
|
audio_driver_unset_active();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -967,44 +967,52 @@ bool audio_driver_alive(void)
|
|||||||
return current_audio->alive(audio_driver_context_audio_data);
|
return current_audio->alive(audio_driver_context_audio_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
|
void audio_driver_frame_is_reverse(void)
|
||||||
{
|
{
|
||||||
switch (state)
|
/* We just rewound. Flush rewind audio buffer. */
|
||||||
{
|
audio_driver_flush(
|
||||||
case RARCH_AUDIO_CTL_DESTROY:
|
audio_driver_data.rewind.buf + audio_driver_data.rewind.ptr,
|
||||||
audio_driver_active = false;
|
audio_driver_data.rewind.size - audio_driver_data.rewind.ptr);
|
||||||
audio_driver_data_own = false;
|
}
|
||||||
current_audio = NULL;
|
|
||||||
break;
|
void audio_driver_destroy_data(void)
|
||||||
case RARCH_AUDIO_CTL_DESTROY_DATA:
|
{
|
||||||
audio_driver_context_audio_data = NULL;
|
audio_driver_context_audio_data = NULL;
|
||||||
break;
|
}
|
||||||
case RARCH_AUDIO_CTL_SET_OWN_DRIVER:
|
|
||||||
audio_driver_data_own = true;
|
void audio_driver_set_own_driver(void)
|
||||||
break;
|
{
|
||||||
case RARCH_AUDIO_CTL_UNSET_OWN_DRIVER:
|
audio_driver_data_own = true;
|
||||||
audio_driver_data_own = false;
|
}
|
||||||
break;
|
|
||||||
case RARCH_AUDIO_CTL_OWNS_DRIVER:
|
void audio_driver_unset_own_driver(void)
|
||||||
return audio_driver_data_own;
|
{
|
||||||
case RARCH_AUDIO_CTL_SET_ACTIVE:
|
audio_driver_data_own = false;
|
||||||
audio_driver_active = true;
|
}
|
||||||
break;
|
|
||||||
case RARCH_AUDIO_CTL_UNSET_ACTIVE:
|
bool audio_driver_owns_driver(void)
|
||||||
audio_driver_active = false;
|
{
|
||||||
break;
|
return audio_driver_data_own;
|
||||||
case RARCH_AUDIO_CTL_IS_ACTIVE:
|
}
|
||||||
return audio_driver_active;
|
|
||||||
case RARCH_AUDIO_CTL_FRAME_IS_REVERSE:
|
void audio_driver_set_active(void)
|
||||||
/* We just rewound. Flush rewind audio buffer. */
|
{
|
||||||
audio_driver_flush(
|
audio_driver_active = true;
|
||||||
audio_driver_data.rewind.buf + audio_driver_data.rewind.ptr,
|
}
|
||||||
audio_driver_data.rewind.size - audio_driver_data.rewind.ptr);
|
|
||||||
break;
|
void audio_driver_unset_active(void)
|
||||||
case RARCH_AUDIO_CTL_NONE:
|
{
|
||||||
default:
|
audio_driver_active = false;
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
|
bool audio_driver_is_active(void)
|
||||||
return true;
|
{
|
||||||
|
return audio_driver_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
void audio_driver_destroy(void)
|
||||||
|
{
|
||||||
|
audio_driver_active = false;
|
||||||
|
audio_driver_data_own = false;
|
||||||
|
current_audio = NULL;
|
||||||
}
|
}
|
||||||
|
@ -37,20 +37,6 @@ extern "C" {
|
|||||||
|
|
||||||
#define AUDIO_MAX_RATIO 16
|
#define AUDIO_MAX_RATIO 16
|
||||||
|
|
||||||
enum rarch_audio_ctl_state
|
|
||||||
{
|
|
||||||
RARCH_AUDIO_CTL_NONE = 0,
|
|
||||||
RARCH_AUDIO_CTL_DESTROY,
|
|
||||||
RARCH_AUDIO_CTL_DESTROY_DATA,
|
|
||||||
RARCH_AUDIO_CTL_FRAME_IS_REVERSE,
|
|
||||||
RARCH_AUDIO_CTL_SET_OWN_DRIVER,
|
|
||||||
RARCH_AUDIO_CTL_UNSET_OWN_DRIVER,
|
|
||||||
RARCH_AUDIO_CTL_OWNS_DRIVER,
|
|
||||||
RARCH_AUDIO_CTL_SET_ACTIVE,
|
|
||||||
RARCH_AUDIO_CTL_UNSET_ACTIVE,
|
|
||||||
RARCH_AUDIO_CTL_IS_ACTIVE
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct audio_driver
|
typedef struct audio_driver
|
||||||
{
|
{
|
||||||
/* Creates and initializes handle to audio driver.
|
/* Creates and initializes handle to audio driver.
|
||||||
@ -102,8 +88,19 @@ typedef struct audio_driver
|
|||||||
size_t (*buffer_size)(void *data);
|
size_t (*buffer_size)(void *data);
|
||||||
} audio_driver_t;
|
} audio_driver_t;
|
||||||
|
|
||||||
|
void audio_driver_destroy_data(void);
|
||||||
|
|
||||||
bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data);
|
void audio_driver_set_own_driver(void);
|
||||||
|
|
||||||
|
void audio_driver_unset_own_driver(void);
|
||||||
|
|
||||||
|
void audio_driver_set_active(void);
|
||||||
|
|
||||||
|
void audio_driver_unset_active(void);
|
||||||
|
|
||||||
|
bool audio_driver_is_active(void);
|
||||||
|
|
||||||
|
void audio_driver_destroy(void);
|
||||||
|
|
||||||
void audio_driver_deinit_resampler(void);
|
void audio_driver_deinit_resampler(void);
|
||||||
|
|
||||||
@ -187,8 +184,12 @@ bool audio_driver_start(void);
|
|||||||
|
|
||||||
bool audio_driver_stop(void);
|
bool audio_driver_stop(void);
|
||||||
|
|
||||||
|
bool audio_driver_owns_driver(void);
|
||||||
|
|
||||||
void audio_driver_unset_callback(void);
|
void audio_driver_unset_callback(void);
|
||||||
|
|
||||||
|
void audio_driver_frame_is_reverse(void);
|
||||||
|
|
||||||
bool audio_driver_alive(void);
|
bool audio_driver_alive(void);
|
||||||
|
|
||||||
bool audio_driver_deinit(void);
|
bool audio_driver_deinit(void);
|
||||||
|
@ -1225,7 +1225,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
|||||||
{
|
{
|
||||||
RARCH_ERR("Failed to start audio driver. "
|
RARCH_ERR("Failed to start audio driver. "
|
||||||
"Will continue without audio.\n");
|
"Will continue without audio.\n");
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_ACTIVE, NULL);
|
audio_driver_unset_active();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EVENT_CMD_AUDIO_MUTE_TOGGLE:
|
case EVENT_CMD_AUDIO_MUTE_TOGGLE:
|
||||||
|
8
driver.c
8
driver.c
@ -304,7 +304,7 @@ static void init_drivers(int flags)
|
|||||||
if (flags & DRIVER_VIDEO)
|
if (flags & DRIVER_VIDEO)
|
||||||
video_driver_unset_own_driver();
|
video_driver_unset_own_driver();
|
||||||
if (flags & DRIVER_AUDIO)
|
if (flags & DRIVER_AUDIO)
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_OWN_DRIVER, NULL);
|
audio_driver_unset_own_driver();
|
||||||
if (flags & DRIVER_INPUT)
|
if (flags & DRIVER_INPUT)
|
||||||
input_driver_ctl(RARCH_INPUT_CTL_UNSET_OWN_DRIVER, NULL);
|
input_driver_ctl(RARCH_INPUT_CTL_UNSET_OWN_DRIVER, NULL);
|
||||||
if (flags & DRIVER_CAMERA)
|
if (flags & DRIVER_CAMERA)
|
||||||
@ -418,8 +418,8 @@ static void uninit_drivers(int flags)
|
|||||||
if ((flags & DRIVER_INPUT) && !input_driver_ctl(RARCH_INPUT_CTL_OWNS_DRIVER, NULL))
|
if ((flags & DRIVER_INPUT) && !input_driver_ctl(RARCH_INPUT_CTL_OWNS_DRIVER, NULL))
|
||||||
input_driver_ctl(RARCH_INPUT_CTL_DESTROY_DATA, NULL);
|
input_driver_ctl(RARCH_INPUT_CTL_DESTROY_DATA, NULL);
|
||||||
|
|
||||||
if ((flags & DRIVER_AUDIO) && !audio_driver_ctl(RARCH_AUDIO_CTL_OWNS_DRIVER, NULL))
|
if ((flags & DRIVER_AUDIO) && !audio_driver_owns_driver())
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_DESTROY_DATA, NULL);
|
audio_driver_destroy_data();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool driver_ctl(enum driver_ctl_state state, void *data)
|
bool driver_ctl(enum driver_ctl_state state, void *data)
|
||||||
@ -428,7 +428,7 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
|
|||||||
{
|
{
|
||||||
case RARCH_DRIVER_CTL_DEINIT:
|
case RARCH_DRIVER_CTL_DEINIT:
|
||||||
video_driver_destroy();
|
video_driver_destroy();
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_DESTROY, NULL);
|
audio_driver_destroy();
|
||||||
input_driver_ctl(RARCH_INPUT_CTL_DESTROY, NULL);
|
input_driver_ctl(RARCH_INPUT_CTL_DESTROY, NULL);
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_DESTROY, NULL);
|
menu_driver_ctl(RARCH_MENU_CTL_DESTROY, NULL);
|
||||||
|
@ -1158,7 +1158,7 @@ static void rarch_init_savefile_paths(void)
|
|||||||
static bool init_state(void)
|
static bool init_state(void)
|
||||||
{
|
{
|
||||||
video_driver_set_active();
|
video_driver_set_active();
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_SET_ACTIVE, NULL);
|
audio_driver_set_active();
|
||||||
|
|
||||||
rarch_ctl(RARCH_CTL_UNSET_FORCE_FULLSCREEN, NULL);
|
rarch_ctl(RARCH_CTL_UNSET_FORCE_FULLSCREEN, NULL);
|
||||||
|
|
||||||
|
2
rewind.c
2
rewind.c
@ -700,7 +700,7 @@ void state_manager_check_rewind(bool pressed)
|
|||||||
|
|
||||||
if (state_manager_frame_is_reversed())
|
if (state_manager_frame_is_reversed())
|
||||||
{
|
{
|
||||||
audio_driver_ctl(RARCH_AUDIO_CTL_FRAME_IS_REVERSE, NULL);
|
audio_driver_frame_is_reverse();
|
||||||
state_manager_set_frame_is_reversed(false);
|
state_manager_set_frame_is_reversed(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user