return 0;
}
+static void FreeHostApiDeviceInfos( PaUtilAllocationGroup *allocations, PaDeviceInfo **deviceInfos, int deviceCount )
+{
+ int i;
+ for (i = 0; i < deviceCount; ++i)
+ {
+ PaWinWdmDeviceInfo* pDevice = (PaWinWdmDeviceInfo*)deviceInfos[i];
+ if (pDevice->filter != 0)
+ {
+ FilterFree(pDevice->filter);
+ }
+ }
+
+ PaUtil_GroupFreeMemory( allocations, deviceInfos[0] ); /* all device info structs are allocated in a block so we can destroy them here */
+ PaUtil_GroupFreeMemory( allocations, deviceInfos );
+}
+
static PaError ScanDeviceInfos( struct PaUtilHostApiRepresentation *hostApi, PaHostApiIndex hostApiIndex, void **scanResults, int *newDeviceCount )
{
PaWinWdmHostApiRepresentation *wdmHostApi = (PaWinWdmHostApiRepresentation*)hostApi;
/* Free any old memory which might be in the device info */
if( hostApi->deviceInfos )
{
- PaWinWDMScanDeviceInfosResults* localScanResults = (PaWinWDMScanDeviceInfosResults*)PaUtil_GroupAllocateMemory(
- wdmHostApi->allocations, sizeof(PaWinWDMScanDeviceInfosResults));
- localScanResults->deviceInfos = hostApi->deviceInfos;
-
- DisposeDeviceInfos(hostApi, localScanResults, hostApi->info.deviceCount);
-
+ FreeHostApiDeviceInfos( wdmHostApi->allocations, hostApi->deviceInfos, hostApi->info.deviceCount );
hostApi->deviceInfos = NULL;
}
static PaError DisposeDeviceInfos( struct PaUtilHostApiRepresentation *hostApi, void *scanResults, int deviceCount )
{
- PaWinWdmHostApiRepresentation *winDsHostApi = (PaWinWdmHostApiRepresentation*)hostApi;
+ PaWinWdmHostApiRepresentation *wdmHostApi = (PaWinWdmHostApiRepresentation*)hostApi;
if( scanResults != NULL )
{
if( scanDeviceInfosResults->deviceInfos )
{
- int i;
- for (i = 0; i < deviceCount; ++i)
- {
- PaWinWdmDeviceInfo* pDevice = (PaWinWdmDeviceInfo*)scanDeviceInfosResults->deviceInfos[i];
- if (pDevice->filter != 0)
- {
- FilterFree(pDevice->filter);
- }
- }
-
- PaUtil_GroupFreeMemory( winDsHostApi->allocations, scanDeviceInfosResults->deviceInfos[0] ); /* all device info structs are allocated in a block so we can destroy them here */
- PaUtil_GroupFreeMemory( winDsHostApi->allocations, scanDeviceInfosResults->deviceInfos );
+ FreeHostApiDeviceInfos( wdmHostApi->allocations, scanDeviceInfosResults->deviceInfos, hostApi->info.deviceCount );
}
- PaUtil_GroupFreeMemory( winDsHostApi->allocations, scanDeviceInfosResults );
+ PaUtil_GroupFreeMemory( wdmHostApi->allocations, scanDeviceInfosResults );
}
return paNoError;
if( wdmHostApi)
{
- PaWinWDMScanDeviceInfosResults* localScanResults = (PaWinWDMScanDeviceInfosResults*)PaUtil_GroupAllocateMemory(
- wdmHostApi->allocations, sizeof(PaWinWDMScanDeviceInfosResults));
- localScanResults->deviceInfos = hostApi->deviceInfos;
- DisposeDeviceInfos(hostApi, localScanResults, hostApi->info.deviceCount);
+ if( hostApi->deviceInfos )
+ {
+ FreeHostApiDeviceInfos( wdmHostApi->allocations, hostApi->deviceInfos, hostApi->info.deviceCount );
+ hostApi->deviceInfos = NULL;
+ }
if( wdmHostApi->allocations )
{