Release left over filters on close

This commit is contained in:
Chris Robinson
2007-12-17 17:08:44 -08:00
parent 635f673b95
commit 91d214d713
3 changed files with 24 additions and 0 deletions
+2
View File
@@ -39,6 +39,8 @@ AL_API ALvoid AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piVa
AL_API ALvoid AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue);
AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues);
ALvoid ReleaseALFilters(ALvoid);
#ifdef __cplusplus
}
#endif
+2
View File
@@ -20,6 +20,7 @@
#include "alMain.h"
#include "alBuffer.h"
#include "alFilter.h"
#include "alThunk.h"
CRITICAL_SECTION g_mutex;
@@ -55,6 +56,7 @@ static void my_deinit()
once = AL_TRUE;
ReleaseALBuffers();
ReleaseALFilters();
FreeALConfig();
ALTHUNK_EXIT();
DeleteCriticalSection(&g_mutex);
+20
View File
@@ -342,6 +342,26 @@ AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pf
}
ALvoid ReleaseALFilters(ALvoid)
{
#ifdef _DEBUG
if(g_FilterCount > 0)
AL_PRINT("exit() %d Filter(s) NOT deleted\n", g_FilterCount);
#endif
while(g_FilterList)
{
ALfilter *temp = g_FilterList;
g_FilterList = g_FilterList->next;
// Release Buffer structure
memset(temp, 0, sizeof(ALfilter));
free(temp);
}
g_FilterCount = 0;
}
static void InitFilterParams(ALfilter *filter, ALenum type)
{
filter->type = type;