mirror of
https://github.com/libretro/RetroArch
synced 2025-03-23 19:21:03 +00:00
Add RARCH_AUDIO_CTL_DEVICES_LIST_NEW/RARCH_AUDIO_CTL_DEVICES_LIST_FREE/RARCH_AUDIO_CTL_DEVICES_LIST_GET
This commit is contained in:
parent
f4b40cd108
commit
d20a2edcb4
@ -18,6 +18,8 @@
|
||||
|
||||
#include <retro_assert.h>
|
||||
|
||||
#include <lists/string_list.h>
|
||||
|
||||
#include "audio_driver.h"
|
||||
#include "audio_resampler_driver.h"
|
||||
#include "../record/record_driver.h"
|
||||
@ -777,6 +779,7 @@ static bool find_audio_driver(void)
|
||||
bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
|
||||
{
|
||||
static struct retro_audio_callback audio_callback;
|
||||
static struct string_list *audio_driver_devices_list = NULL;
|
||||
static struct retro_perf_counter resampler_proc = {0};
|
||||
static const rarch_resampler_t *audio_driver_resampler = NULL;
|
||||
static void *audio_driver_resampler_data = NULL;
|
||||
@ -790,6 +793,29 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
|
||||
rarch_resampler_freep(&audio_driver_resampler,
|
||||
&audio_driver_resampler_data);
|
||||
break;
|
||||
case RARCH_AUDIO_CTL_DEVICES_LIST_FREE:
|
||||
if (!current_audio || !current_audio->device_list_free
|
||||
|| !audio_driver_context_audio_data)
|
||||
return false;
|
||||
current_audio->device_list_free(audio_driver_context_audio_data, audio_driver_devices_list);
|
||||
audio_driver_devices_list = NULL;
|
||||
break;
|
||||
case RARCH_AUDIO_CTL_DEVICES_LIST_NEW:
|
||||
if (!current_audio || !current_audio->device_list_new
|
||||
|| !audio_driver_context_audio_data)
|
||||
return false;
|
||||
audio_driver_devices_list = current_audio->device_list_new(audio_driver_context_audio_data);
|
||||
if (!audio_driver_devices_list)
|
||||
return false;
|
||||
break;
|
||||
case RARCH_AUDIO_CTL_DEVICES_LIST_GET:
|
||||
{
|
||||
struct string_list**ptr = (struct string_list**)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = audio_driver_devices_list;
|
||||
}
|
||||
break;
|
||||
case RARCH_AUDIO_CTL_RESAMPLER_INIT:
|
||||
return rarch_resampler_realloc(
|
||||
&audio_driver_resampler_data,
|
||||
@ -815,6 +841,7 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
|
||||
audio_driver_context_audio_data = NULL;
|
||||
break;
|
||||
case RARCH_AUDIO_CTL_DEINIT:
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_DEVICES_LIST_FREE, NULL);
|
||||
if (!uninit_audio())
|
||||
return false;
|
||||
break;
|
||||
|
@ -65,7 +65,10 @@ enum rarch_audio_ctl_state
|
||||
RARCH_AUDIO_CTL_IS_ACTIVE,
|
||||
RARCH_AUDIO_CTL_RESAMPLER_DEINIT,
|
||||
RARCH_AUDIO_CTL_RESAMPLER_INIT,
|
||||
RARCH_AUDIO_CTL_RESAMPLER_PROCESS
|
||||
RARCH_AUDIO_CTL_RESAMPLER_PROCESS,
|
||||
RARCH_AUDIO_CTL_DEVICES_LIST_NEW,
|
||||
RARCH_AUDIO_CTL_DEVICES_LIST_FREE,
|
||||
RARCH_AUDIO_CTL_DEVICES_LIST_GET
|
||||
};
|
||||
|
||||
typedef struct audio_driver
|
||||
|
Loading…
x
Reference in New Issue
Block a user