From eba60c30c5e1676786b33be38c3845d850e96bcb Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Thu, 17 Jul 2008 18:45:21 -0700 Subject: [PATCH] Don't force initialization when shutting down Thanks to Michael Simms --- Alc/ALc.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Alc/ALc.c b/Alc/ALc.c index 22334ea6..2363766c 100644 --- a/Alc/ALc.c +++ b/Alc/ALc.c @@ -192,6 +192,8 @@ static ALCuint g_ulContextCount = 0; // Context Error static ALCenum g_eLastContextError = ALC_NO_ERROR; +static ALboolean init_done = AL_FALSE; + /////////////////////////////////////////////////////// @@ -210,6 +212,8 @@ BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) break; case DLL_PROCESS_DETACH: + if(!init_done) + break; ReleaseALC(); ReleaseALBuffers(); ReleaseALEffects(); @@ -227,7 +231,7 @@ static void my_deinit() __attribute__((destructor)); static void my_deinit() { static ALenum once = AL_FALSE; - if(once) return; + if(once || !init_done) return; once = AL_TRUE; ReleaseALC(); @@ -243,13 +247,12 @@ static void my_deinit() static void InitAL(void) { - static int done = 0; - if(!done) + if(!init_done) { int i; const char *devs, *str; - done = 1; + init_done = AL_TRUE; InitializeCriticalSection(&g_csMutex); ALTHUNK_INIT(); @@ -1294,8 +1297,6 @@ ALCAPI ALCboolean ALCAPIENTRY alcCloseDevice(ALCdevice *pDevice) ALCvoid ReleaseALC(ALCvoid) { - InitAL(); - #ifdef _DEBUG if(g_ulContextCount > 0) AL_PRINT("exit() %u device(s) and %u context(s) NOT deleted\n", g_ulDeviceCount, g_ulContextCount); -- 2.11.4.GIT