core/tempq: Add tempq ops to queues durinig init

Rather than setting them after.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2016-01-13 16:17:42 -05:00
parent 5419711409
commit 2770403c61
2 changed files with 9 additions and 11 deletions

View File

@ -26,20 +26,18 @@ static void __tempq_free(struct queue *queue)
g_free(queue); g_free(queue);
} }
static struct queue *__tempq_read_queue() static void __tempq_read_queue(struct queue_ops *ops)
{ {
unsigned int flags, count, i, track; unsigned int flags, count, i, track;
struct queue *queue; struct queue *queue;
file_readf(&tempq_file, "%u %u", &flags, &count); file_readf(&tempq_file, "%u %u", &flags, &count);
queue = __tempq_alloc(NULL, flags); queue = __tempq_alloc(ops, flags);
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
file_readf(&tempq_file, "%u", &track); file_readf(&tempq_file, "%u", &track);
queue_add(queue, track_get(track)); queue_add(queue, track_get(track));
} }
return queue;
} }
static void __tempq_write_queue(struct queue *queue) static void __tempq_write_queue(struct queue *queue)
@ -58,7 +56,6 @@ static void __tempq_write_queue(struct queue *queue)
void tempq_init(struct queue_ops *ops) void tempq_init(struct queue_ops *ops)
{ {
struct queue *queue;
unsigned int num, i; unsigned int num, i;
file_init(&tempq_file, "deck", 1); file_init(&tempq_file, "deck", 1);
@ -68,10 +65,8 @@ void tempq_init(struct queue_ops *ops)
goto out; goto out;
file_readf(&tempq_file, "%u", &num); file_readf(&tempq_file, "%u", &num);
for (i = 0; i < num; i++) { for (i = 0; i < num; i++)
queue = __tempq_read_queue(); __tempq_read_queue(ops);
queue->q_ops = ops;
}
out: out:
file_close(&tempq_file); file_close(&tempq_file);
} }

View File

@ -35,8 +35,11 @@ static void tempq_deinit(struct queue *queue)
static void tempq_added(struct queue *queue, unsigned int pos) static void tempq_added(struct queue *queue, unsigned int pos)
{ {
find_tab(queue)->on_track_added(pos); Tab *tab = find_tab(queue);
tempq_save(queue, Q_ENABLED); if (tab) {
tab->on_track_added(pos);
tempq_save(queue, Q_ENABLED);
}
} }
static void tempq_removed(struct queue *queue, unsigned int pos) static void tempq_removed(struct queue *queue, unsigned int pos)