aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/ALc.c
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/ALc.c')
-rw-r--r--Alc/ALc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index 0fb87fad..f72122f3 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -1686,6 +1686,11 @@ static ALCvoid FreeDevice(ALCdevice *device)
{
TRACE("%p\n", device);
+ if(device->Type != Capture)
+ ALCdevice_ClosePlayback(device);
+ else
+ ALCdevice_CloseCapture(device);
+
if(device->DefaultSlot)
{
ALeffectState_Destroy(device->DefaultSlot->EffectState);
@@ -2856,8 +2861,6 @@ ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *Device)
ALCdevice_StopPlayback(Device);
Device->Flags &= ~DEVICE_RUNNING;
- ALCdevice_ClosePlayback(Device);
-
ALCdevice_DecRef(Device);
return ALC_TRUE;
@@ -2962,8 +2965,6 @@ ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *Device)
*list = (*list)->next;
UnlockLists();
- ALCdevice_CloseCapture(Device);
-
ALCdevice_DecRef(Device);
return ALC_TRUE;