diff options
author | Chris Robinson <[email protected]> | 2008-07-17 18:38:07 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2008-07-17 18:38:07 -0700 |
commit | e66bb09156bb69725f91b249a6cdf0082f7fad74 (patch) | |
tree | 3af0e44c09f04675330fd92657db00961f53451e | |
parent | 0042b1f80d1d702a432fcdfe56af17e0d7fa6ec9 (diff) |
Move (de)initialization into ALc.c and remove unneeded file
-rw-r--r-- | Alc/ALc.c | 52 | ||||
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | OpenAL32/Include/alMain.h | 2 | ||||
-rw-r--r-- | OpenAL32/OpenAL32.c | 74 |
4 files changed, 49 insertions, 80 deletions
@@ -33,6 +33,7 @@ #include "AL/alc.h" #include "alThunk.h" #include "alSource.h" +#include "alBuffer.h" #include "alExtension.h" #include "alAuxEffectSlot.h" #include "bs2b.h" @@ -182,6 +183,8 @@ static ALCint alcEFXMinorVersion = 0; static ALCdevice *g_pDeviceList = NULL; static ALCuint g_ulDeviceCount = 0; +static CRITICAL_SECTION g_csMutex; + // Context List static ALCcontext *g_pContextList = NULL; static ALCuint g_ulContextCount = 0; @@ -194,6 +197,49 @@ static ALCenum g_eLastContextError = ALC_NO_ERROR; /////////////////////////////////////////////////////// // ALC Related helper functions +#ifdef _WIN32 +BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) +{ + (void)lpReserved; + + // Perform actions based on the reason for calling. + switch(ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(hModule); + break; + + case DLL_PROCESS_DETACH: + ReleaseALC(); + ReleaseALBuffers(); + ReleaseALEffects(); + ReleaseALFilters(); + FreeALConfig(); + ALTHUNK_EXIT(); + DeleteCriticalSection(&g_csMutex); + break; + } + return TRUE; +} +#else +#ifdef HAVE_GCC_DESTRUCTOR +static void my_deinit() __attribute__((destructor)); +static void my_deinit() +{ + static ALenum once = AL_FALSE; + if(once) return; + once = AL_TRUE; + + ReleaseALC(); + ReleaseALBuffers(); + ReleaseALEffects(); + ReleaseALFilters(); + FreeALConfig(); + ALTHUNK_EXIT(); + DeleteCriticalSection(&g_csMutex); +} +#endif +#endif static void InitAL(void) { @@ -205,7 +251,7 @@ static void InitAL(void) done = 1; - InitializeCriticalSection(&_alMutex); + InitializeCriticalSection(&g_csMutex); ALTHUNK_INIT(); ReadALConfig(); @@ -335,7 +381,7 @@ ALCvoid SetALCError(ALenum errorCode) ALCvoid SuspendContext(ALCcontext *pContext) { (void)pContext; - EnterCriticalSection(&_alMutex); + EnterCriticalSection(&g_csMutex); } @@ -347,7 +393,7 @@ ALCvoid SuspendContext(ALCcontext *pContext) ALCvoid ProcessContext(ALCcontext *pContext) { (void)pContext; - LeaveCriticalSection(&_alMutex); + LeaveCriticalSection(&g_csMutex); } diff --git a/CMakeLists.txt b/CMakeLists.txt index 810f61e7..511405ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -206,7 +206,6 @@ SET(OPENAL_OBJS OpenAL32/alAuxEffectSlot.c OpenAL32/alSource.c OpenAL32/alState.c OpenAL32/alThunk.c - OpenAL32/OpenAL32.c ) SET(ALC_OBJS Alc/ALc.c Alc/ALu.c diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index 6bc5fd48..15512e7e 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -103,8 +103,6 @@ static inline void Sleep(ALuint t) extern "C" { #endif -extern CRITICAL_SECTION _alMutex; - extern char _alDebug[256]; #define AL_PRINT(...) do { \ diff --git a/OpenAL32/OpenAL32.c b/OpenAL32/OpenAL32.c deleted file mode 100644 index 71ebf0c0..00000000 --- a/OpenAL32/OpenAL32.c +++ /dev/null @@ -1,74 +0,0 @@ -/** - * OpenAL cross platform audio library - * Copyright (C) 1999-2007 by authors. - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * Or go to http://www.gnu.org/copyleft/lgpl.html - */ - -#include "config.h" - -#include "alMain.h" -#include "alBuffer.h" -#include "alFilter.h" -#include "alEffect.h" -#include "alAuxEffectSlot.h" -#include "alThunk.h" - -CRITICAL_SECTION _alMutex; - -#ifdef _WIN32 -BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) -{ - (void)lpReserved; - - // Perform actions based on the reason for calling. - switch(ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - DisableThreadLibraryCalls(hModule); - break; - - case DLL_PROCESS_DETACH: - ReleaseALC(); - ReleaseALBuffers(); - ReleaseALEffects(); - ReleaseALFilters(); - FreeALConfig(); - ALTHUNK_EXIT(); - DeleteCriticalSection(&_alMutex); - break; - } - return TRUE; -} -#else -#ifdef HAVE_GCC_DESTRUCTOR -static void my_deinit() __attribute__((destructor)); -static void my_deinit() -{ - static ALenum once = AL_FALSE; - if(once) return; - once = AL_TRUE; - - ReleaseALC(); - ReleaseALBuffers(); - ReleaseALEffects(); - ReleaseALFilters(); - FreeALConfig(); - ALTHUNK_EXIT(); - DeleteCriticalSection(&_alMutex); -} -#endif -#endif |