core/tempq: Clean up tempq alloc and free
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
15f5b8fc87
commit
5c92d0771f
|
@ -12,6 +12,22 @@ extern "C" {
|
|||
static GSList *tempq_list;
|
||||
static struct file deck_file;
|
||||
|
||||
static struct queue *__tempq_alloc(struct queue_ops *ops, unsigned int flags)
|
||||
{
|
||||
struct queue *queue = new struct queue;
|
||||
|
||||
tempq_list = g_slist_append(tempq_list, queue);
|
||||
queue_init(queue, flags | Q_ENABLED | Q_SAVE_FLAGS | Q_SAVE_SORT, ops);
|
||||
return queue;
|
||||
}
|
||||
|
||||
static void __tempq_free(struct queue *queue)
|
||||
{
|
||||
tempq_list = g_slist_remove(tempq_list, queue);
|
||||
queue_deinit(queue);
|
||||
delete queue;
|
||||
}
|
||||
|
||||
|
||||
void tempq_init(struct queue_ops *ops)
|
||||
{
|
||||
|
@ -28,7 +44,7 @@ void tempq_init(struct queue_ops *ops)
|
|||
file_readf(&deck_file, "%u", &num);
|
||||
for (i = 0; i < num; i++) {
|
||||
file_readf(&deck_file, "%u %u", &flags, &count);
|
||||
queue = tempq_alloc(NULL, flags);
|
||||
queue = __tempq_alloc(NULL, flags);
|
||||
for (j = 0; j < count; j++) {
|
||||
file_readf(&deck_file, "%u", &id);
|
||||
queue_add(queue, track_get(id));
|
||||
|
@ -40,15 +56,8 @@ void tempq_init(struct queue_ops *ops)
|
|||
|
||||
void tempq_deinit()
|
||||
{
|
||||
GSList *cur;
|
||||
|
||||
for (cur = tempq_list; cur; cur = g_slist_next(cur)) {
|
||||
queue_deinit((struct queue *)cur->data);
|
||||
delete (struct queue *)cur->data;
|
||||
}
|
||||
|
||||
g_slist_free(tempq_list);
|
||||
tempq_list = NULL;
|
||||
while (tempq_list)
|
||||
__tempq_free((struct queue *)tempq_list->data);
|
||||
}
|
||||
|
||||
void tempq_save(struct queue *queue, enum queue_flags flag)
|
||||
|
@ -75,20 +84,15 @@ void tempq_save(struct queue *queue, enum queue_flags flag)
|
|||
|
||||
struct queue *tempq_alloc(struct queue_ops *ops, unsigned int flags)
|
||||
{
|
||||
struct queue *queue = new struct queue;
|
||||
|
||||
tempq_list = g_slist_append(tempq_list, queue);
|
||||
queue_init(queue, flags | Q_ENABLED | Q_SAVE_FLAGS | Q_SAVE_SORT, ops);
|
||||
struct queue *queue = __tempq_alloc(ops, flags);
|
||||
tempq_save(queue, Q_ENABLED);
|
||||
return queue;
|
||||
}
|
||||
|
||||
void tempq_free(struct queue *queue)
|
||||
{
|
||||
tempq_list = g_slist_remove(tempq_list, queue);
|
||||
queue_deinit(queue);
|
||||
tempq_save(queue, Q_ENABLED);
|
||||
delete queue;
|
||||
__tempq_free(queue);
|
||||
tempq_save(NULL, Q_ENABLED);
|
||||
}
|
||||
|
||||
struct queue *tempq_get(unsigned int index)
|
||||
|
|
Loading…
Reference in New Issue