diff --git a/core/tempq.c b/core/tempq.c index 8ae883ed..73e3d5f5 100644 --- a/core/tempq.c +++ b/core/tempq.c @@ -26,20 +26,18 @@ static void __tempq_free(struct queue *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; struct queue *queue; file_readf(&tempq_file, "%u %u", &flags, &count); - queue = __tempq_alloc(NULL, flags); + queue = __tempq_alloc(ops, flags); for (i = 0; i < count; i++) { file_readf(&tempq_file, "%u", &track); queue_add(queue, track_get(track)); } - - return 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) { - struct queue *queue; unsigned int num, i; file_init(&tempq_file, "deck", 1); @@ -68,10 +65,8 @@ void tempq_init(struct queue_ops *ops) goto out; file_readf(&tempq_file, "%u", &num); - for (i = 0; i < num; i++) { - queue = __tempq_read_queue(); - queue->q_ops = ops; - } + for (i = 0; i < num; i++) + __tempq_read_queue(ops); out: file_close(&tempq_file); } diff --git a/gui/tabs.cpp b/gui/tabs.cpp index 5325cbb7..16848efe 100644 --- a/gui/tabs.cpp +++ b/gui/tabs.cpp @@ -35,8 +35,11 @@ static void tempq_deinit(struct queue *queue) static void tempq_added(struct queue *queue, unsigned int pos) { - find_tab(queue)->on_track_added(pos); - tempq_save(queue, Q_ENABLED); + Tab *tab = find_tab(queue); + if (tab) { + tab->on_track_added(pos); + tempq_save(queue, Q_ENABLED); + } } static void tempq_removed(struct queue *queue, unsigned int pos)