diff --git a/core/library.cpp b/core/library.cpp index fc4adc02..153641aa 100644 --- a/core/library.cpp +++ b/core/library.cpp @@ -21,24 +21,6 @@ public: file_init(&f, "library.q", 0); } - void save() - { - GSList *cur = q_sort; - int field; - - if (!file_open(&f, OPEN_WRITE)) - return; - - file_writef(&f, "%u %u", q_flags, g_slist_length(q_sort)); - while (cur) { - field = GPOINTER_TO_INT(cur->data); - file_writef(&f, " %u %d", abs(field) - 1, field > 0); - cur = g_slist_next(cur); - } - file_writef(&f, "\n"); - file_close(&f); - } - void load() { unsigned int field; @@ -60,6 +42,7 @@ public: }; static LibraryQueue library_q; +static struct file c_file; struct scan_info { struct library *library; @@ -147,6 +130,7 @@ void collection_init(struct queue_ops *ops) { struct db_entry *track, *next; + file_init(&c_file, "library.q", 0); queue_init(&library_q, Q_ENABLED | Q_REPEAT | Q_ADD_FRONT, ops); db_for_each(track, next, track_db_get()) { @@ -173,8 +157,22 @@ void collection_deinit() void collection_save(struct queue *queue, enum queue_flags flag) { - if (&library_q == queue) - library_q.save(); + GSList *cur = library_q.q_sort; + int field; + + if (&library_q != queue) + return; + if (!file_open(&c_file, OPEN_WRITE)) + return; + + file_writef(&c_file, "%u %u", library_q.q_flags, g_slist_length(cur)); + while (cur) { + field = GPOINTER_TO_INT(cur->data); + file_writef(&c_file, " %u %d", abs(field) - 1, field > 0); + cur = g_slist_next(cur); + } + file_writef(&c_file, "\n"); + file_close(&c_file); } struct library *collection_add(const gchar *path)