Keep the backend device open until the last reference is released

This should generally happen with the next ALCdevice_DecRef call unless the
device is in the middle of being used in another thread, in which case it's
probably best to not remove the resources.
This commit is contained in:
Chris Robinson
2012-08-18 14:49:42 -07:00
parent 3ae5fcbd7e
commit 2b020040b4
+5 -4
View File
@@ -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;