[SCM] Packaging for openal-soft branch, master, updated. debian/1.3.253-5-9-g1ba30b6
Gerfried Fuchs
rhonda at debian.at
Sat Aug 9 19:48:28 UTC 2008
The following commit has been merged in the master branch:
commit 7261de42e77d68d2d27778da3fee971a2d46785e
Author: Gerfried Fuchs <rhonda at debian.at>
Date: Sat Aug 9 16:27:17 2008 -0300
Pulled upstream commits e66bb09156bb69725f91b2 and eba60c30c5e1676786b33b to fix an (de)initialization issue that produces segfaults when doing autofoo in some special circumstances.
diff --git a/debian/changelog b/debian/changelog
index 4cf182a..412a080 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+openal-soft (1:1.4.272-2) unstable; urgency=low
+
+ [ Gerfried Fuchs ]
+ * Pulled upstream commits e66bb09156bb69725f91b2 and eba60c30c5e1676786b33b
+ to fix an (de)initialization issue that produces segfaults when doing
+ autofoo in some special circumstances.
+
+ -- Gerfried Fuchs <rhonda at debian.at> Sat, 09 Aug 2008 16:26:52 -0300
+
openal-soft (1:1.4.272-1) unstable; urgency=low
[ Andres Mejia ]
diff --git a/debian/patches/deinit-move.patch b/debian/patches/deinit-move.patch
new file mode 100644
index 0000000..d3779c0
--- /dev/null
+++ b/debian/patches/deinit-move.patch
@@ -0,0 +1,209 @@
+commit e66bb09156bb69725f91b249a6cdf0082f7fad74
+Author: Chris Robinson <chris.kcat at gmail.com>
+Date: Thu Jul 17 18:38:07 2008 -0700
+
+ Move (de)initialization into ALc.c and remove unneeded file
+
+diff --git a/Alc/ALc.c b/Alc/ALc.c
+index cb4c2ce..22334ea 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 810f61e..511405e 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 6bc5fd4..15512e7 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 71ebf0c..0000000
+--- 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
diff --git a/debian/patches/no-init-force.patch b/debian/patches/no-init-force.patch
new file mode 100644
index 0000000..66c93dd
--- /dev/null
+++ b/debian/patches/no-init-force.patch
@@ -0,0 +1,63 @@
+commit eba60c30c5e1676786b33be38c3845d850e96bcb
+Author: Chris Robinson <chris.kcat at gmail.com>
+Date: Thu Jul 17 18:45:21 2008 -0700
+
+ Don't force initialization when shutting down
+ Thanks to Michael Simms
+
+diff --git a/Alc/ALc.c b/Alc/ALc.c
+index 22334ea..2363766 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);
diff --git a/debian/patches/series b/debian/patches/series
index 2d40801..fe461f9 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,3 @@
static_lib.patch
+deinit-move.patch
+no-init-force.patch
--
Packaging for openal-soft
More information about the Pkg-games-commits
mailing list