Delay reading the config file on Windows, too
This commit is contained in:
parent
81d401eab5
commit
b5092a6212
22
Alc/ALc.c
22
Alc/ALc.c
@ -509,10 +509,6 @@ static void alc_init(void)
|
||||
tls_create(&LocalContext);
|
||||
InitializeCriticalSection(&ListLock);
|
||||
ALTHUNK_INIT();
|
||||
|
||||
#ifdef _WIN32
|
||||
alc_initconfig();
|
||||
#endif
|
||||
}
|
||||
|
||||
static void alc_deinit(void)
|
||||
@ -665,11 +661,23 @@ static void alc_initconfig(void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
#ifdef _WIN32
|
||||
static struct once_control {
|
||||
LONG canpass;
|
||||
LONG hasrun;
|
||||
} once_control = { TRUE, FALSE };
|
||||
static void call_once(struct once_control *once, void (*callback)(void))
|
||||
{
|
||||
while(InterlockedExchange(&once->canpass, FALSE) == FALSE)
|
||||
Sleep(0);
|
||||
if(InterlockedExchange(&once->hasrun, TRUE) == FALSE)
|
||||
callback();
|
||||
InterlockedExchange(&once->canpass, TRUE);
|
||||
}
|
||||
#define DO_INITCONFIG() call_once(&once_control, alc_initconfig)
|
||||
#else
|
||||
static pthread_once_t once_control = PTHREAD_ONCE_INIT;
|
||||
#define DO_INITCONFIG() pthread_once(&once_control, alc_initconfig)
|
||||
#else
|
||||
#define DO_INITCONFIG()
|
||||
#endif
|
||||
|
||||
static void ProbeList(ALCchar **list, size_t *listsize, int type)
|
||||
|
Loading…
x
Reference in New Issue
Block a user