aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--router/alc.c14
-rw-r--r--router/router.c3
-rw-r--r--router/router.h3
3 files changed, 14 insertions, 6 deletions
diff --git a/router/alc.c b/router/alc.c
index 704aa146..87f1e3f7 100644
--- a/router/alc.c
+++ b/router/alc.c
@@ -240,8 +240,8 @@ static const ALCint alcMinorVersion = 1;
static ATOMIC(ALCenum) LastError = ATOMIC_INIT_STATIC(ALC_NO_ERROR);
-PtrIntMap DeviceIfaceMap = PTRINTMAP_STATIC_INITIALIZE;
-PtrIntMap ContextIfaceMap = PTRINTMAP_STATIC_INITIALIZE;
+static PtrIntMap DeviceIfaceMap = PTRINTMAP_STATIC_INITIALIZE;
+static PtrIntMap ContextIfaceMap = PTRINTMAP_STATIC_INITIALIZE;
typedef struct EnumeratedList {
@@ -317,6 +317,16 @@ static ALint GetDriverIndexForName(const EnumeratedList *list, const ALCchar *na
return -1;
}
+void ReleaseALC(void)
+{
+ ClearDeviceList(&DevicesList);
+ ClearDeviceList(&AllDevicesList);
+ ClearDeviceList(&CaptureDevicesList);
+
+ ResetPtrIntMap(&ContextIfaceMap);
+ ResetPtrIntMap(&DeviceIfaceMap);
+}
+
ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename)
{
diff --git a/router/router.c b/router/router.c
index 3adf64e2..a8a5ebbf 100644
--- a/router/router.c
+++ b/router/router.c
@@ -33,8 +33,7 @@ BOOL APIENTRY DllMain(HINSTANCE module, DWORD reason, void *reserved)
break;
case DLL_PROCESS_DETACH:
- ResetPtrIntMap(&ContextIfaceMap);
- ResetPtrIntMap(&DeviceIfaceMap);
+ ReleaseALC();
for(i = 0;i < DriverListSize;i++)
{
if(DriverList[i].Module)
diff --git a/router/router.h b/router/router.h
index 016c3998..f4ba33c7 100644
--- a/router/router.h
+++ b/router/router.h
@@ -135,7 +135,6 @@ ALint RemovePtrIntMapKey(PtrIntMap *map, ALvoid *key);
ALint LookupPtrIntMapKey(PtrIntMap *map, ALvoid *key);
-extern PtrIntMap DeviceIfaceMap;
-extern PtrIntMap ContextIfaceMap;
+void ReleaseALC(void);
#endif /* ROUTER_ROUTER_H */