aboutsummaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
Diffstat (limited to 'Alc')
-rw-r--r--Alc/ALc.c518
1 files changed, 254 insertions, 264 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index 0caccd1b..f4a8bfd8 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -673,7 +673,7 @@ static ALCvoid ExitContext(ALCcontext *pContext)
ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *deviceName, ALCuint frequency, ALCenum format, ALCsizei SampleSize)
{
ALCboolean DeviceFound = ALC_FALSE;
- ALCdevice *pDevice = NULL;
+ ALCdevice *device = NULL;
ALCint i;
if(SampleSize <= 0)
@@ -685,119 +685,115 @@ ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *deviceName,
if(deviceName && !deviceName[0])
deviceName = NULL;
- pDevice = malloc(sizeof(ALCdevice));
- if (pDevice)
+ device = calloc(1, sizeof(ALCdevice));
+ if(!device)
{
- //Initialise device structure
- memset(pDevice, 0, sizeof(ALCdevice));
+ alcSetError(NULL, ALC_OUT_OF_MEMORY);
+ return NULL;
+ }
- //Validate device
- pDevice->Connected = ALC_TRUE;
- pDevice->IsCaptureDevice = AL_TRUE;
+ //Validate device
+ device->Connected = ALC_TRUE;
+ device->IsCaptureDevice = AL_TRUE;
- pDevice->szDeviceName = NULL;
+ device->szDeviceName = NULL;
- pDevice->Frequency = frequency;
- pDevice->Format = format;
- pDevice->UpdateSize = SampleSize;
- pDevice->NumUpdates = 1;
+ device->Frequency = frequency;
+ device->Format = format;
+ device->UpdateSize = SampleSize;
+ device->NumUpdates = 1;
- SuspendContext(NULL);
- for(i = 0;BackendList[i].Init;i++)
+ SuspendContext(NULL);
+ for(i = 0;BackendList[i].Init;i++)
+ {
+ device->Funcs = &BackendList[i].Funcs;
+ if(ALCdevice_OpenCapture(device, deviceName))
{
- pDevice->Funcs = &BackendList[i].Funcs;
- if(ALCdevice_OpenCapture(pDevice, deviceName))
- {
- pDevice->next = g_pDeviceList;
- g_pDeviceList = pDevice;
- g_ulDeviceCount++;
+ device->next = g_pDeviceList;
+ g_pDeviceList = device;
+ g_ulDeviceCount++;
- DeviceFound = ALC_TRUE;
- break;
- }
+ DeviceFound = ALC_TRUE;
+ break;
}
- ProcessContext(NULL);
+ }
+ ProcessContext(NULL);
- if(!DeviceFound)
- {
- alcSetError(NULL, ALC_INVALID_VALUE);
- free(pDevice);
- pDevice = NULL;
- }
+ if(!DeviceFound)
+ {
+ alcSetError(NULL, ALC_INVALID_VALUE);
+ free(device);
+ device = NULL;
}
- else
- alcSetError(NULL, ALC_OUT_OF_MEMORY);
- return pDevice;
+ return device;
}
ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *pDevice)
{
- ALCboolean bReturn = ALC_FALSE;
ALCdevice **list;
- if(IsDevice(pDevice) && pDevice->IsCaptureDevice)
+ if(!IsDevice(pDevice) || !pDevice->IsCaptureDevice)
{
- SuspendContext(NULL);
+ alcSetError(pDevice, ALC_INVALID_DEVICE);
+ return ALC_FALSE;
+ }
- list = &g_pDeviceList;
- while(*list != pDevice)
- list = &(*list)->next;
+ SuspendContext(NULL);
- *list = (*list)->next;
- g_ulDeviceCount--;
+ list = &g_pDeviceList;
+ while(*list != pDevice)
+ list = &(*list)->next;
- ProcessContext(NULL);
+ *list = (*list)->next;
+ g_ulDeviceCount--;
- ALCdevice_CloseCapture(pDevice);
+ ProcessContext(NULL);
- free(pDevice->szDeviceName);
- pDevice->szDeviceName = NULL;
+ ALCdevice_CloseCapture(pDevice);
- free(pDevice);
+ free(pDevice->szDeviceName);
+ pDevice->szDeviceName = NULL;
- bReturn = ALC_TRUE;
- }
- else
- alcSetError(pDevice, ALC_INVALID_DEVICE);
+ free(pDevice);
- return bReturn;
+ return ALC_TRUE;
}
-ALC_API void ALC_APIENTRY alcCaptureStart(ALCdevice *pDevice)
+ALC_API void ALC_APIENTRY alcCaptureStart(ALCdevice *device)
{
- if(IsDevice(pDevice) && pDevice->IsCaptureDevice)
+ if(!IsDevice(device) || !device->IsCaptureDevice)
{
- SuspendContext(NULL);
- ALCdevice_StartCapture(pDevice);
- ProcessContext(NULL);
+ alcSetError(device, ALC_INVALID_DEVICE);
+ return;
}
- else
- alcSetError(pDevice, ALC_INVALID_DEVICE);
+ SuspendContext(NULL);
+ ALCdevice_StartCapture(device);
+ ProcessContext(NULL);
}
-ALC_API void ALC_APIENTRY alcCaptureStop(ALCdevice *pDevice)
+ALC_API void ALC_APIENTRY alcCaptureStop(ALCdevice *device)
{
- if(IsDevice(pDevice) && pDevice->IsCaptureDevice)
+ if(!IsDevice(device) || !device->IsCaptureDevice)
{
- SuspendContext(NULL);
- ALCdevice_StopCapture(pDevice);
- ProcessContext(NULL);
+ alcSetError(device, ALC_INVALID_DEVICE);
+ return;
}
- else
- alcSetError(pDevice, ALC_INVALID_DEVICE);
+ SuspendContext(NULL);
+ ALCdevice_StopCapture(device);
+ ProcessContext(NULL);
}
-ALC_API void ALC_APIENTRY alcCaptureSamples(ALCdevice *pDevice, ALCvoid *pBuffer, ALCsizei lSamples)
+ALC_API void ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples)
{
- if(IsDevice(pDevice) && pDevice->IsCaptureDevice)
+ if(!IsDevice(device) || !device->IsCaptureDevice)
{
- SuspendContext(NULL);
- ALCdevice_CaptureSamples(pDevice, pBuffer, lSamples);
- ProcessContext(NULL);
+ alcSetError(device, ALC_INVALID_DEVICE);
+ return;
}
- else
- alcSetError(pDevice, ALC_INVALID_DEVICE);
+ SuspendContext(NULL);
+ ALCdevice_CaptureSamples(device, buffer, samples);
+ ProcessContext(NULL);
}
/*
@@ -1123,32 +1119,32 @@ ALC_API ALCvoid ALC_APIENTRY alcGetIntegerv(ALCdevice *device,ALCenum param,ALsi
ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extName)
{
ALCboolean bResult = ALC_FALSE;
+ const char *ptr;
+ size_t len;
- if (extName)
+ if(!extName)
{
- const char *ptr;
- size_t len;
+ alcSetError(device, ALC_INVALID_VALUE);
+ return ALC_FALSE;
+ }
- len = strlen(extName);
- ptr = (IsDevice(device) ? alcExtensionList : alcNoDeviceExtList);
- while(ptr && *ptr)
+ len = strlen(extName);
+ ptr = (IsDevice(device) ? alcExtensionList : alcNoDeviceExtList);
+ while(ptr && *ptr)
+ {
+ if(strncasecmp(ptr, extName, len) == 0 &&
+ (ptr[len] == '\0' || isspace(ptr[len])))
{
- if(strncasecmp(ptr, extName, len) == 0 &&
- (ptr[len] == '\0' || isspace(ptr[len])))
- {
- bResult = ALC_TRUE;
- break;
- }
- if((ptr=strchr(ptr, ' ')) != NULL)
- {
- do {
- ++ptr;
- } while(isspace(*ptr));
- }
+ bResult = ALC_TRUE;
+ break;
+ }
+ if((ptr=strchr(ptr, ' ')) != NULL)
+ {
+ do {
+ ++ptr;
+ } while(isspace(*ptr));
}
}
- else
- alcSetError(device, ALC_INVALID_VALUE);
return bResult;
}
@@ -1161,20 +1157,17 @@ ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const A
*/
ALC_API ALCvoid* ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcName)
{
- ALCvoid *pFunction = NULL;
ALsizei i = 0;
- if (funcName)
+ if(!funcName)
{
- while(alcFunctions[i].funcName &&
- strcmp(alcFunctions[i].funcName,funcName) != 0)
- i++;
- pFunction = alcFunctions[i].address;
- }
- else
alcSetError(device, ALC_INVALID_VALUE);
+ return NULL;
+ }
- return pFunction;
+ while(alcFunctions[i].funcName && strcmp(alcFunctions[i].funcName,funcName) != 0)
+ i++;
+ return alcFunctions[i].address;
}
@@ -1188,7 +1181,7 @@ ALC_API ALCenum ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *e
ALsizei i = 0;
ALCenum val;
- while ((enumeration[i].enumName)&&(strcmp(enumeration[i].enumName,enumName)))
+ while(enumeration[i].enumName && strcmp(enumeration[i].enumName,enumName) == 0)
i++;
val = enumeration[i].value;
@@ -1389,65 +1382,67 @@ ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCin
*/
ALC_API ALCvoid ALC_APIENTRY alcDestroyContext(ALCcontext *context)
{
+ ALCdevice *Device;
ALCcontext **list;
ALuint i;
- if (IsContext(context))
+ if(!IsContext(context))
{
- ALCdevice *Device = context->Device;
+ alcSetError(NULL, ALC_INVALID_CONTEXT);
+ return;
+ }
- if(Device->NumContexts == 1)
- ALCdevice_StopPlayback(Device);
+ Device = context->Device;
- SuspendContext(NULL);
+ if(Device->NumContexts == 1)
+ ALCdevice_StopPlayback(Device);
- for(i = 0;i < Device->NumContexts-1;i++)
+ SuspendContext(NULL);
+
+ for(i = 0;i < Device->NumContexts-1;i++)
+ {
+ if(Device->Contexts[i] == context)
{
- if(Device->Contexts[i] == context)
- {
- Device->Contexts[i] = Device->Contexts[Device->NumContexts-1];
- break;
- }
+ Device->Contexts[i] = Device->Contexts[Device->NumContexts-1];
+ break;
}
- Device->NumContexts--;
+ }
+ Device->NumContexts--;
- // Lock context
- SuspendContext(context);
+ // Lock context
+ SuspendContext(context);
- if(context->SourceCount > 0)
- {
+ if(context->SourceCount > 0)
+ {
#ifdef _DEBUG
- AL_PRINT("alcDestroyContext(): deleting %d Source(s)\n", context->SourceCount);
+ AL_PRINT("alcDestroyContext(): deleting %d Source(s)\n", context->SourceCount);
#endif
- ReleaseALSources(context);
- }
- if(context->EffectSlotCount > 0)
- {
+ ReleaseALSources(context);
+ }
+ if(context->EffectSlotCount > 0)
+ {
#ifdef _DEBUG
- AL_PRINT("alcDestroyContext(): deleting %d AuxiliaryEffectSlot(s)\n", context->EffectSlotCount);
+ AL_PRINT("alcDestroyContext(): deleting %d AuxiliaryEffectSlot(s)\n", context->EffectSlotCount);
#endif
- ReleaseALAuxiliaryEffectSlots(context);
- }
+ ReleaseALAuxiliaryEffectSlots(context);
+ }
- list = &g_pContextList;
- while(*list != context)
- list = &(*list)->next;
+ list = &g_pContextList;
+ while(*list != context)
+ list = &(*list)->next;
- *list = (*list)->next;
- g_ulContextCount--;
+ *list = (*list)->next;
+ g_ulContextCount--;
- // Unlock context
- ProcessContext(context);
- ProcessContext(NULL);
+ // Unlock context
+ ProcessContext(context);
+ ProcessContext(NULL);
- ExitContext(context);
+ ExitContext(context);
- // Free memory (MUST do this after ProcessContext)
- memset(context, 0, sizeof(ALCcontext));
- free(context);
- }
- else
- alcSetError(NULL, ALC_INVALID_CONTEXT);
+ // Free memory (MUST do this after ProcessContext)
+ memset(context, 0, sizeof(ALCcontext));
+ free(context);
}
@@ -1500,7 +1495,7 @@ ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice(ALCcontext *pContext)
ALCdevice *pDevice = NULL;
SuspendContext(NULL);
- if (IsContext(pContext))
+ if(IsContext(pContext))
pDevice = pContext->Device;
else
alcSetError(NULL, ALC_INVALID_CONTEXT);
@@ -1698,103 +1693,100 @@ static ALenum GetFormatFromString(const char *str)
ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *deviceName)
{
ALboolean bDeviceFound = AL_FALSE;
+ const ALCchar *fmt;
ALCdevice *device;
ALint i;
if(deviceName && !deviceName[0])
deviceName = NULL;
- device = malloc(sizeof(ALCdevice));
- if (device)
+ device = calloc(1, sizeof(ALCdevice));
+ if(!device)
{
- const char *fmt;
-
- //Initialise device structure
- memset(device, 0, sizeof(ALCdevice));
+ alcSetError(NULL, ALC_OUT_OF_MEMORY);
+ return NULL;
+ }
- //Validate device
- device->Connected = ALC_TRUE;
- device->IsCaptureDevice = AL_FALSE;
- device->LastError = ALC_NO_ERROR;
+ //Validate device
+ device->Connected = ALC_TRUE;
+ device->IsCaptureDevice = AL_FALSE;
+ device->LastError = ALC_NO_ERROR;
- device->Bs2b = NULL;
- device->szDeviceName = NULL;
+ device->Bs2b = NULL;
+ device->szDeviceName = NULL;
- device->Contexts = NULL;
- device->NumContexts = 0;
+ device->Contexts = NULL;
+ device->NumContexts = 0;
- //Set output format
- device->Frequency = GetConfigValueInt(NULL, "frequency", SWMIXER_OUTPUT_RATE);
- if(device->Frequency < 8000)
- device->Frequency = 8000;
+ //Set output format
+ device->Frequency = GetConfigValueInt(NULL, "frequency", SWMIXER_OUTPUT_RATE);
+ if(device->Frequency < 8000)
+ device->Frequency = 8000;
- fmt = GetConfigValue(NULL, "format", "AL_FORMAT_STEREO16");
- device->Format = GetFormatFromString(fmt);
+ fmt = GetConfigValue(NULL, "format", "AL_FORMAT_STEREO16");
+ device->Format = GetFormatFromString(fmt);
- device->NumUpdates = GetConfigValueInt(NULL, "periods", 4);
- if(device->NumUpdates < 2)
- device->NumUpdates = 4;
+ device->NumUpdates = GetConfigValueInt(NULL, "periods", 4);
+ if(device->NumUpdates < 2)
+ device->NumUpdates = 4;
- i = GetConfigValueInt(NULL, "refresh", 4096);
- if(i <= 0) i = 4096;
+ i = GetConfigValueInt(NULL, "refresh", 4096);
+ if(i <= 0) i = 4096;
- device->UpdateSize = GetConfigValueInt(NULL, "period_size", i/device->NumUpdates);
- if(device->UpdateSize <= 0)
- device->UpdateSize = i/device->NumUpdates;
+ device->UpdateSize = GetConfigValueInt(NULL, "period_size", i/device->NumUpdates);
+ if(device->UpdateSize <= 0)
+ device->UpdateSize = i/device->NumUpdates;
- device->MaxNoOfSources = GetConfigValueInt(NULL, "sources", 256);
- if((ALint)device->MaxNoOfSources <= 0)
- device->MaxNoOfSources = 256;
+ device->MaxNoOfSources = GetConfigValueInt(NULL, "sources", 256);
+ if((ALint)device->MaxNoOfSources <= 0)
+ device->MaxNoOfSources = 256;
- device->AuxiliaryEffectSlotMax = GetConfigValueInt(NULL, "slots", 4);
- if((ALint)device->AuxiliaryEffectSlotMax <= 0)
- device->AuxiliaryEffectSlotMax = 4;
+ device->AuxiliaryEffectSlotMax = GetConfigValueInt(NULL, "slots", 4);
+ if((ALint)device->AuxiliaryEffectSlotMax <= 0)
+ device->AuxiliaryEffectSlotMax = 4;
- device->lNumStereoSources = 1;
- device->lNumMonoSources = device->MaxNoOfSources - device->lNumStereoSources;
+ device->lNumStereoSources = 1;
+ device->lNumMonoSources = device->MaxNoOfSources - device->lNumStereoSources;
- device->NumAuxSends = GetConfigValueInt(NULL, "sends", MAX_SENDS);
- if(device->NumAuxSends > MAX_SENDS)
- device->NumAuxSends = MAX_SENDS;
+ device->NumAuxSends = GetConfigValueInt(NULL, "sends", MAX_SENDS);
+ if(device->NumAuxSends > MAX_SENDS)
+ device->NumAuxSends = MAX_SENDS;
- device->Bs2bLevel = GetConfigValueInt(NULL, "cf_level", 0);
+ device->Bs2bLevel = GetConfigValueInt(NULL, "cf_level", 0);
- if(aluChannelsFromFormat(device->Format) <= 2)
- {
- device->HeadDampen = GetConfigValueFloat(NULL, "head_dampen", DEFAULT_HEAD_DAMPEN);
- device->HeadDampen = __min(device->HeadDampen, 1.0f);
- device->HeadDampen = __max(device->HeadDampen, 0.0f);
- }
- else
- device->HeadDampen = 0.0f;
+ if(aluChannelsFromFormat(device->Format) <= 2)
+ {
+ device->HeadDampen = GetConfigValueFloat(NULL, "head_dampen", DEFAULT_HEAD_DAMPEN);
+ device->HeadDampen = __min(device->HeadDampen, 1.0f);
+ device->HeadDampen = __max(device->HeadDampen, 0.0f);
+ }
+ else
+ device->HeadDampen = 0.0f;
- // Find a playback device to open
- SuspendContext(NULL);
- for(i = 0;BackendList[i].Init;i++)
+ // Find a playback device to open
+ SuspendContext(NULL);
+ for(i = 0;BackendList[i].Init;i++)
+ {
+ device->Funcs = &BackendList[i].Funcs;
+ if(ALCdevice_OpenPlayback(device, deviceName))
{
- device->Funcs = &BackendList[i].Funcs;
- if(ALCdevice_OpenPlayback(device, deviceName))
- {
- device->next = g_pDeviceList;
- g_pDeviceList = device;
- g_ulDeviceCount++;
+ device->next = g_pDeviceList;
+ g_pDeviceList = device;
+ g_ulDeviceCount++;
- bDeviceFound = AL_TRUE;
- break;
- }
+ bDeviceFound = AL_TRUE;
+ break;
}
- ProcessContext(NULL);
+ }
+ ProcessContext(NULL);
- if (!bDeviceFound)
- {
- // No suitable output device found
- alcSetError(NULL, ALC_INVALID_VALUE);
- free(device);
- device = NULL;
- }
+ if(!bDeviceFound)
+ {
+ // No suitable output device found
+ alcSetError(NULL, ALC_INVALID_VALUE);
+ free(device);
+ device = NULL;
}
- else
- alcSetError(NULL, ALC_OUT_OF_MEMORY);
return device;
}
@@ -1807,80 +1799,78 @@ ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *deviceName)
*/
ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *pDevice)
{
- ALCboolean bReturn = ALC_FALSE;
ALCdevice **list;
- if(IsDevice(pDevice) && !pDevice->IsCaptureDevice)
+ if(!IsDevice(pDevice) || pDevice->IsCaptureDevice)
{
- SuspendContext(NULL);
+ alcSetError(pDevice, ALC_INVALID_DEVICE);
+ return ALC_FALSE;
+ }
- list = &g_pDeviceList;
- while(*list != pDevice)
- list = &(*list)->next;
+ SuspendContext(NULL);
- *list = (*list)->next;
- g_ulDeviceCount--;
+ list = &g_pDeviceList;
+ while(*list != pDevice)
+ list = &(*list)->next;
- ProcessContext(NULL);
+ *list = (*list)->next;
+ g_ulDeviceCount--;
- if(pDevice->NumContexts > 0)
- {
+ ProcessContext(NULL);
+
+ if(pDevice->NumContexts > 0)
+ {
#ifdef _DEBUG
- AL_PRINT("alcCloseDevice(): destroying %u Context(s)\n", pDevice->NumContexts);
+ AL_PRINT("alcCloseDevice(): destroying %u Context(s)\n", pDevice->NumContexts);
#endif
- while(pDevice->NumContexts > 0)
- alcDestroyContext(pDevice->Contexts[0]);
- }
- ALCdevice_ClosePlayback(pDevice);
+ while(pDevice->NumContexts > 0)
+ alcDestroyContext(pDevice->Contexts[0]);
+ }
+ ALCdevice_ClosePlayback(pDevice);
- if(pDevice->BufferCount > 0)
- {
+ if(pDevice->BufferCount > 0)
+ {
#ifdef _DEBUG
- AL_PRINT("alcCloseDevice(): deleting %d Buffer(s)\n", pDevice->BufferCount);
+ AL_PRINT("alcCloseDevice(): deleting %d Buffer(s)\n", pDevice->BufferCount);
#endif
- ReleaseALBuffers(pDevice);
- }
- if(pDevice->EffectCount > 0)
- {
+ ReleaseALBuffers(pDevice);
+ }
+ if(pDevice->EffectCount > 0)
+ {
#ifdef _DEBUG
- AL_PRINT("alcCloseDevice(): deleting %d Effect(s)\n", pDevice->EffectCount);
+ AL_PRINT("alcCloseDevice(): deleting %d Effect(s)\n", pDevice->EffectCount);
#endif
- ReleaseALEffects(pDevice);
- }
- if(pDevice->FilterCount > 0)
- {
+ ReleaseALEffects(pDevice);
+ }
+ if(pDevice->FilterCount > 0)
+ {
#ifdef _DEBUG
- AL_PRINT("alcCloseDevice(): deleting %d Filter(s)\n", pDevice->FilterCount);
+ AL_PRINT("alcCloseDevice(): deleting %d Filter(s)\n", pDevice->FilterCount);
#endif
- ReleaseALFilters(pDevice);
- }
- if(pDevice->DatabufferCount > 0)
- {
+ ReleaseALFilters(pDevice);
+ }
+ if(pDevice->DatabufferCount > 0)
+ {
#ifdef _DEBUG
- AL_PRINT("alcCloseDevice(): deleting %d Databuffer(s)\n", pDevice->DatabufferCount);
+ AL_PRINT("alcCloseDevice(): deleting %d Databuffer(s)\n", pDevice->DatabufferCount);
#endif
- ReleaseALDatabuffers(pDevice);
- }
-
- free(pDevice->Bs2b);
- pDevice->Bs2b = NULL;
+ ReleaseALDatabuffers(pDevice);
+ }
- free(pDevice->szDeviceName);
- pDevice->szDeviceName = NULL;
+ free(pDevice->Bs2b);
+ pDevice->Bs2b = NULL;
- free(pDevice->Contexts);
- pDevice->Contexts = NULL;
+ free(pDevice->szDeviceName);
+ pDevice->szDeviceName = NULL;
- //Release device structure
- memset(pDevice, 0, sizeof(ALCdevice));
- free(pDevice);
+ free(pDevice->Contexts);
+ pDevice->Contexts = NULL;
- bReturn = ALC_TRUE;
- }
- else
- alcSetError(pDevice, ALC_INVALID_DEVICE);
+ //Release device structure
+ memset(pDevice, 0, sizeof(ALCdevice));
+ free(pDevice);
- return bReturn;
+ return ALC_TRUE;
}