Load backend libs on init
This commit is contained in:
parent
742bb12498
commit
0b0588cc37
22
Alc/alsa.c
22
Alc/alsa.c
@ -158,22 +158,21 @@ MAKE_FUNC(snd_card_next);
|
||||
#endif
|
||||
|
||||
|
||||
void *alsa_load(void)
|
||||
static ALCboolean alsa_load(void)
|
||||
{
|
||||
if(!alsa_handle)
|
||||
{
|
||||
#ifdef HAVE_DYNLOAD
|
||||
alsa_handle = LoadLib("libasound.so.2");
|
||||
if(!alsa_handle)
|
||||
return NULL;
|
||||
return ALC_FALSE;
|
||||
|
||||
#define LOAD_FUNC(f) do { \
|
||||
p##f = GetSymbol(alsa_handle, #f); \
|
||||
if(p##f == NULL) \
|
||||
{ \
|
||||
if(p##f == NULL) { \
|
||||
CloseLib(alsa_handle); \
|
||||
alsa_handle = NULL; \
|
||||
return NULL; \
|
||||
return ALC_FALSE; \
|
||||
} \
|
||||
} while(0)
|
||||
LOAD_FUNC(snd_strerror);
|
||||
@ -240,7 +239,7 @@ void *alsa_load(void)
|
||||
alsa_handle = (void*)0xDEADBEEF;
|
||||
#endif
|
||||
}
|
||||
return alsa_handle;
|
||||
return ALC_TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -520,9 +519,6 @@ static ALCboolean alsa_open_playback(ALCdevice *device, const ALCchar *deviceNam
|
||||
char driver[64];
|
||||
int i;
|
||||
|
||||
if(!alsa_load())
|
||||
return ALC_FALSE;
|
||||
|
||||
strncpy(driver, GetConfigValue("alsa", "device", "default"), sizeof(driver)-1);
|
||||
driver[sizeof(driver)-1] = 0;
|
||||
|
||||
@ -803,9 +799,6 @@ static ALCboolean alsa_open_capture(ALCdevice *pDevice, const ALCchar *deviceNam
|
||||
char *err;
|
||||
int i;
|
||||
|
||||
if(!alsa_load())
|
||||
return ALC_FALSE;
|
||||
|
||||
strncpy(driver, GetConfigValue("alsa", "capture", "default"), sizeof(driver)-1);
|
||||
driver[sizeof(driver)-1] = 0;
|
||||
|
||||
@ -1055,6 +1048,8 @@ static const BackendFuncs alsa_funcs = {
|
||||
|
||||
ALCboolean alc_alsa_init(BackendFuncs *func_list)
|
||||
{
|
||||
if(!alsa_load())
|
||||
return ALC_FALSE;
|
||||
*func_list = alsa_funcs;
|
||||
return ALC_TRUE;
|
||||
}
|
||||
@ -1086,9 +1081,6 @@ void alc_alsa_probe(enum DevProbe type)
|
||||
{
|
||||
ALuint i;
|
||||
|
||||
if(!alsa_load())
|
||||
return;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case DEVICE_PROBE:
|
||||
|
@ -58,7 +58,7 @@ MAKE_FUNC(Pa_GetStreamInfo);
|
||||
#define Pa_GetStreamInfo pPa_GetStreamInfo
|
||||
#endif
|
||||
|
||||
void *pa_load(void)
|
||||
static ALCboolean pa_load(void)
|
||||
{
|
||||
if(!pa_handle)
|
||||
{
|
||||
@ -77,7 +77,7 @@ void *pa_load(void)
|
||||
|
||||
pa_handle = LoadLib(PALIB);
|
||||
if(!pa_handle)
|
||||
return NULL;
|
||||
return ALC_FALSE;
|
||||
|
||||
#define LOAD_FUNC(f) do { \
|
||||
p##f = GetSymbol(pa_handle, #f); \
|
||||
@ -85,7 +85,7 @@ void *pa_load(void)
|
||||
{ \
|
||||
CloseLib(pa_handle); \
|
||||
pa_handle = NULL; \
|
||||
return NULL; \
|
||||
return ALC_FALSE; \
|
||||
} \
|
||||
} while(0)
|
||||
LOAD_FUNC(Pa_Initialize);
|
||||
@ -107,10 +107,10 @@ void *pa_load(void)
|
||||
ERR("Pa_Initialize() returned an error: %s\n", Pa_GetErrorText(err));
|
||||
CloseLib(pa_handle);
|
||||
pa_handle = NULL;
|
||||
return NULL;
|
||||
return ALC_FALSE;
|
||||
}
|
||||
}
|
||||
return pa_handle;
|
||||
return ALC_TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -163,9 +163,6 @@ static ALCboolean pa_open_playback(ALCdevice *device, const ALCchar *deviceName)
|
||||
else if(strcmp(deviceName, pa_device) != 0)
|
||||
return ALC_FALSE;
|
||||
|
||||
if(!pa_load())
|
||||
return ALC_FALSE;
|
||||
|
||||
data = (pa_data*)calloc(1, sizeof(pa_data));
|
||||
data->update_size = device->UpdateSize;
|
||||
|
||||
@ -293,9 +290,6 @@ static ALCboolean pa_open_capture(ALCdevice *device, const ALCchar *deviceName)
|
||||
else if(strcmp(deviceName, pa_device) != 0)
|
||||
return ALC_FALSE;
|
||||
|
||||
if(!pa_load())
|
||||
return ALC_FALSE;
|
||||
|
||||
data = (pa_data*)calloc(1, sizeof(pa_data));
|
||||
if(data == NULL)
|
||||
{
|
||||
@ -420,6 +414,8 @@ static const BackendFuncs pa_funcs = {
|
||||
|
||||
ALCboolean alc_pa_init(BackendFuncs *func_list)
|
||||
{
|
||||
if(!pa_load())
|
||||
return ALC_FALSE;
|
||||
*func_list = pa_funcs;
|
||||
return ALC_TRUE;
|
||||
}
|
||||
@ -438,8 +434,6 @@ void alc_pa_deinit(void)
|
||||
|
||||
void alc_pa_probe(enum DevProbe type)
|
||||
{
|
||||
if(!pa_load()) return;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case DEVICE_PROBE:
|
||||
|
@ -224,7 +224,7 @@ static ALuint numCaptureDevNames;
|
||||
static pa_context_flags_t pulse_ctx_flags;
|
||||
|
||||
|
||||
void *pulse_load(void) //{{{
|
||||
static ALCboolean pulse_load(void) //{{{
|
||||
{
|
||||
if(!pa_handle)
|
||||
{
|
||||
@ -239,14 +239,14 @@ void *pulse_load(void) //{{{
|
||||
#endif
|
||||
pa_handle = LoadLib(PALIB);
|
||||
if(!pa_handle)
|
||||
return NULL;
|
||||
return ALC_FALSE;
|
||||
|
||||
#define LOAD_FUNC(x) do { \
|
||||
p##x = GetSymbol(pa_handle, #x); \
|
||||
if(!(p##x)) { \
|
||||
CloseLib(pa_handle); \
|
||||
pa_handle = NULL; \
|
||||
return NULL; \
|
||||
return ALC_FALSE; \
|
||||
} \
|
||||
} while(0)
|
||||
LOAD_FUNC(pa_context_unref);
|
||||
@ -323,7 +323,7 @@ void *pulse_load(void) //{{{
|
||||
pa_handle = (void*)0xDEADBEEF;
|
||||
#endif
|
||||
}
|
||||
return pa_handle;
|
||||
return ALC_TRUE;
|
||||
} //}}}
|
||||
|
||||
// PulseAudio Event Callbacks //{{{
|
||||
@ -834,9 +834,6 @@ static ALCboolean pulse_open_playback(ALCdevice *device, const ALCchar *device_n
|
||||
pa_sample_spec spec;
|
||||
pulse_data *data;
|
||||
|
||||
if(!pulse_load())
|
||||
return ALC_FALSE;
|
||||
|
||||
if(!allDevNameMap)
|
||||
probe_devices(AL_FALSE);
|
||||
|
||||
@ -1076,9 +1073,6 @@ static ALCboolean pulse_open_capture(ALCdevice *device, const ALCchar *device_na
|
||||
pa_stream_state_t state;
|
||||
pa_channel_map chanmap;
|
||||
|
||||
if(!pulse_load())
|
||||
return ALC_FALSE;
|
||||
|
||||
if(!allCaptureDevNameMap)
|
||||
probe_devices(AL_TRUE);
|
||||
|
||||
@ -1298,6 +1292,9 @@ static const BackendFuncs pulse_funcs = { //{{{
|
||||
|
||||
ALCboolean alc_pulse_init(BackendFuncs *func_list) //{{{
|
||||
{
|
||||
if(!pulse_load())
|
||||
return ALC_FALSE;
|
||||
|
||||
*func_list = pulse_funcs;
|
||||
|
||||
pulse_ctx_flags = 0;
|
||||
@ -1341,8 +1338,6 @@ void alc_pulse_probe(enum DevProbe type) //{{{
|
||||
pa_threaded_mainloop *loop;
|
||||
ALuint i;
|
||||
|
||||
if(!pulse_load()) return;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case DEVICE_PROBE:
|
||||
|
19
Alc/sndio.c
19
Alc/sndio.c
@ -74,22 +74,21 @@ MAKE_FUNC(sio_onvol);
|
||||
#endif
|
||||
|
||||
|
||||
void *sndio_load(void)
|
||||
static ALCboolean sndio_load(void)
|
||||
{
|
||||
if(!sndio_handle)
|
||||
{
|
||||
#ifdef HAVE_DYNLOAD
|
||||
sndio_handle = LoadLib("libsndio.so");
|
||||
if(!sndio_handle)
|
||||
return NULL;
|
||||
return ALC_FALSE;
|
||||
|
||||
#define LOAD_FUNC(f) do { \
|
||||
p##f = GetSymbol(sndio_handle, #f); \
|
||||
if(p##f == NULL) \
|
||||
{ \
|
||||
if(p##f == NULL) { \
|
||||
CloseLib(sndio_handle); \
|
||||
sndio_handle = NULL; \
|
||||
return NULL; \
|
||||
return ALC_FALSE; \
|
||||
} \
|
||||
} while(0)
|
||||
LOAD_FUNC(sio_initpar);
|
||||
@ -114,7 +113,7 @@ void *sndio_load(void)
|
||||
sndio_handle = (void*)0xDEADBEEF;
|
||||
#endif
|
||||
}
|
||||
return sndio_handle;
|
||||
return ALC_TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -170,9 +169,6 @@ static ALCboolean sndio_open_playback(ALCdevice *device, const ALCchar *deviceNa
|
||||
{
|
||||
sndio_data *data;
|
||||
|
||||
if(!sndio_load())
|
||||
return ALC_FALSE;
|
||||
|
||||
if(!deviceName)
|
||||
deviceName = sndio_device;
|
||||
else if(strcmp(deviceName, sndio_device) != 0)
|
||||
@ -362,6 +358,8 @@ static const BackendFuncs sndio_funcs = {
|
||||
|
||||
ALCboolean alc_sndio_init(BackendFuncs *func_list)
|
||||
{
|
||||
if(!sndio_load())
|
||||
return ALC_FALSE;
|
||||
*func_list = sndio_funcs;
|
||||
return ALC_TRUE;
|
||||
}
|
||||
@ -377,9 +375,6 @@ void alc_sndio_deinit(void)
|
||||
|
||||
void alc_sndio_probe(enum DevProbe type)
|
||||
{
|
||||
if(!sndio_load())
|
||||
return;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case DEVICE_PROBE:
|
||||
|
Loading…
x
Reference in New Issue
Block a user