From 44df5c35678ae050ab072e64c09ccbe142077898 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 19 Dec 2007 14:14:26 -0800 Subject: MacOSX doesn't like global szDebug and g_mutex symbol names --- Alc/ALc.c | 8 ++++---- OpenAL32/Include/alMain.h | 10 +++++----- OpenAL32/OpenAL32.c | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Alc/ALc.c b/Alc/ALc.c index a721f0de..b4ec8e9f 100644 --- a/Alc/ALc.c +++ b/Alc/ALc.c @@ -33,7 +33,7 @@ /////////////////////////////////////////////////////// // DEBUG INFORMATION -char szDebug[256]; +char _alDebug[256]; /////////////////////////////////////////////////////// @@ -193,7 +193,7 @@ static void InitAL(void) int i; const char *devs; - InitializeCriticalSection(&g_mutex); + InitializeCriticalSection(&_alMutex); ALTHUNK_INIT(); ReadALConfig(); @@ -303,7 +303,7 @@ ALCvoid SetALCError(ALenum errorCode) ALCvoid SuspendContext(ALCcontext *pContext) { (void)pContext; - EnterCriticalSection(&g_mutex); + EnterCriticalSection(&_alMutex); } @@ -315,7 +315,7 @@ ALCvoid SuspendContext(ALCcontext *pContext) ALCvoid ProcessContext(ALCcontext *pContext) { (void)pContext; - LeaveCriticalSection(&g_mutex); + LeaveCriticalSection(&_alMutex); } diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index 8ffda560..71e29e47 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -72,18 +72,18 @@ extern "C" { #endif -extern CRITICAL_SECTION g_mutex; +extern CRITICAL_SECTION _alMutex; -extern char szDebug[256]; +extern char _alDebug[256]; #define AL_PRINT(...) do { \ int _al_print_i; \ char *_al_print_fn = strrchr(__FILE__, '/'); \ if(!_al_print_fn) _al_print_fn = __FILE__; \ else _al_print_fn += 1; \ - _al_print_i = snprintf(szDebug, sizeof(szDebug), "AL lib: %s:%d: ", _al_print_fn, __LINE__); \ - snprintf(szDebug+_al_print_i, sizeof(szDebug)-_al_print_i, __VA_ARGS__); \ - fprintf(stderr, "%s", szDebug); \ + _al_print_i = snprintf(_alDebug, sizeof(_alDebug), "AL lib: %s:%d: ", _al_print_fn, __LINE__); \ + snprintf(_alDebug+_al_print_i, sizeof(_alDebug)-_al_print_i, __VA_ARGS__); \ + fprintf(stderr, "%s", _alDebug); \ } while(0) diff --git a/OpenAL32/OpenAL32.c b/OpenAL32/OpenAL32.c index b638d945..678888b0 100644 --- a/OpenAL32/OpenAL32.c +++ b/OpenAL32/OpenAL32.c @@ -22,7 +22,7 @@ #include "alBuffer.h" #include "alThunk.h" -CRITICAL_SECTION g_mutex; +CRITICAL_SECTION _alMutex; #ifdef _WIN32 BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) @@ -40,7 +40,7 @@ BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) ReleaseALBuffers(); FreeALConfig(); ALTHUNK_EXIT(); - DeleteCriticalSection(&g_mutex); + DeleteCriticalSection(&_alMutex); break; } return TRUE; @@ -57,7 +57,7 @@ static void my_deinit() ReleaseALBuffers(); FreeALConfig(); ALTHUNK_EXIT(); - DeleteCriticalSection(&g_mutex); + DeleteCriticalSection(&_alMutex); } #endif #endif -- cgit v1.2.3 From 0bef94cb483fd8a09d7be49f78474aed5a3630fe Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Thu, 20 Dec 2007 12:32:54 -0800 Subject: Don't use the lib prefix for the Win32 DLL --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f1a49945..0dea95a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,8 +35,10 @@ SET(LIB_VERSION "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_BUILD_VERSION}" IF("${WIN32}") SET(LIBNAME openal32) + SET(TARGET_OPTS "PREFIX \"\"") ELSE() SET(LIBNAME openal) + SET(TARGET_OPTS "") ENDIF() @@ -256,7 +258,9 @@ ADD_DEFINITIONS(-DAL_BUILD_LIBRARY) # Build a shared library ADD_LIBRARY(${LIBNAME} SHARED ${OPENAL_OBJS} ${ALC_OBJS}) -SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES VERSION ${LIB_VERSION} SOVERSION ${LIB_MAJOR_VERSION}) +SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES VERSION ${LIB_VERSION} + SOVERSION ${LIB_MAJOR_VERSION} + ${TARGET_OPTS}) TARGET_LINK_LIBRARIES(${LIBNAME} ${EXTRA_LIBS}) -- cgit v1.2.3 From 5b0514a829afcdca201096f8f1c38ab684d45b49 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Thu, 20 Dec 2007 21:40:22 -0800 Subject: Do the channel pannings based on output channel count This should make it a bit easier to extend in the future --- Alc/ALu.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/Alc/ALu.c b/Alc/ALu.c index 0821d6b4..87764592 100644 --- a/Alc/ALu.c +++ b/Alc/ALu.c @@ -319,20 +319,8 @@ static ALvoid CalcSourceParams(ALCcontext *ALContext, ALsource *ALSource, Matrix[2][0] = U[2]; Matrix[2][1] = V[2]; Matrix[2][2] = -N[2]; aluMatrixVector(Position, Matrix); - //6. Convert normalized position into left/right front/back pannings - if(Distance != 0.0f) - { - aluNormalize(Position); - PanningLR = 0.5f + 0.5f*Position[0]; - PanningFB = 0.5f + 0.5f*Position[2]; - } - else - { - PanningLR = 0.5f; - PanningFB = 0.5f; - } - - //7. Convert pannings into channel volumes + //6. Convert normalized position into pannings, then into channel volumes + aluNormalize(Position); switch(OutputFormat) { case AL_FORMAT_MONO8: @@ -344,6 +332,7 @@ static ALvoid CalcSourceParams(ALCcontext *ALContext, ALsource *ALSource, break; case AL_FORMAT_STEREO8: case AL_FORMAT_STEREO16: + PanningLR = 0.5f + 0.5f*Position[0]; drysend[0] = ConeVolume * ListenerGain * DryMix * aluSqrt(1.0f-PanningLR); //L Direct drysend[1] = ConeVolume * ListenerGain * DryMix * aluSqrt( PanningLR); //R Direct wetsend[0] = ListenerGain * WetMix * aluSqrt(1.0f-PanningLR); //L Room @@ -351,6 +340,13 @@ static ALvoid CalcSourceParams(ALCcontext *ALContext, ALsource *ALSource, break; case AL_FORMAT_QUAD8: case AL_FORMAT_QUAD16: + // Apply a scalar so each individual speaker has more weight + PanningLR = 0.5f + (0.5f*Position[0]*1.41421356f); + PanningLR = __min(1.0f, PanningLR); + PanningLR = __max(0.0f, PanningLR); + PanningFB = 0.5f + (0.5f*Position[2]*1.41421356f); + PanningFB = __min(1.0f, PanningFB); + PanningFB = __max(0.0f, PanningFB); drysend[0] = ConeVolume * ListenerGain * DryMix * aluSqrt((1.0f-PanningLR)*(1.0f-PanningFB)); //FL Direct drysend[1] = ConeVolume * ListenerGain * DryMix * aluSqrt(( PanningLR)*(1.0f-PanningFB)); //FR Direct drysend[2] = ConeVolume * ListenerGain * DryMix * aluSqrt((1.0f-PanningLR)*( PanningFB)); //BL Direct -- cgit v1.2.3