/* Methods */
void _PLMTPC_Destroy(PlayListManager manager)
{
	PlayListManager_PC state = (PlayListManager_PC)manager->InternalState;
	if(state != NULL)
	{
		sem_wait(&state->LockObject);
		sem_destroy(&state->LockObject);

		String_Destroy(state->UDN);
		String_Destroy(state->ServiceID);
		String_Destroy(state->ContainerID);
		String_Destroy(state->FirstItemID);
		String_Destroy(state->SortArgs);

		ClearMetadata(state);

		free(state);
	}
	if(manager->TrackURI != NULL)
	{
		free(manager->TrackURI);
	}
	if(manager->TrackMetaData != NULL)
	{
		CDS_ObjRef_Release(manager->TrackMetaData);
	}
	sem_destroy(&manager->LockObject);
	if(manager->ShuffleArray != NULL)
	{
		BitArray_Destroy(manager->ShuffleArray);
	}

	free(manager);
}
Example #2
0
/* Methods */
void _PLMTS_Destroy(PlayListManager manager)
{
    PlayListManager_S state = (PlayListManager_S)manager->InternalState;
    if(state != NULL)
    {
        sem_wait(&state->FirstBlockFinished);
        sem_destroy(&state->FirstBlockFinished);

        sem_wait(&state->BlocksFinished);
        sem_destroy(&state->BlocksFinished);

        CircularBuffer_Destroy(state->_buffer);
        IndexBlocks_Destroy(state->Blocks);

        free(state);
    }
    if(manager->TrackURI != NULL)
    {
        free(manager->TrackURI);
    }
    if(manager->TrackMetaData != NULL)
    {
        CDS_ObjRef_Release(manager->TrackMetaData);
    }
    sem_destroy(&manager->LockObject);
    if(manager->ShuffleArray != NULL)
    {
        BitArray_Destroy(manager->ShuffleArray);
    }

    free(manager);
}