aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2008-07-17 18:38:07 -0700
committerChris Robinson <[email protected]>2008-07-17 18:38:07 -0700
commite66bb09156bb69725f91b249a6cdf0082f7fad74 (patch)
tree3af0e44c09f04675330fd92657db00961f53451e
parent0042b1f80d1d702a432fcdfe56af17e0d7fa6ec9 (diff)
Move (de)initialization into ALc.c and remove unneeded file
-rw-r--r--Alc/ALc.c52
-rw-r--r--CMakeLists.txt1
-rw-r--r--OpenAL32/Include/alMain.h2
-rw-r--r--OpenAL32/OpenAL32.c74
4 files changed, 49 insertions, 80 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index cb4c2ce3..22334ea6 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -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