Release left over filters on close
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user