core/tempq: Clean up reading and writing queues
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
5c92d0771f
commit
187c56f328
|
@ -10,7 +10,7 @@ extern "C" {
|
|||
#include <glib.h>
|
||||
|
||||
static GSList *tempq_list;
|
||||
static struct file deck_file;
|
||||
static struct file tempq_file;
|
||||
|
||||
static struct queue *__tempq_alloc(struct queue_ops *ops, unsigned int flags)
|
||||
{
|
||||
|
@ -28,30 +28,51 @@ static void __tempq_free(struct queue *queue)
|
|||
delete queue;
|
||||
}
|
||||
|
||||
static struct queue *__tempq_read_queue()
|
||||
{
|
||||
unsigned int flags, count, i, track;
|
||||
struct queue *queue;
|
||||
|
||||
file_readf(&tempq_file, "%u %u", &flags, &count);
|
||||
queue = __tempq_alloc(NULL, 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)
|
||||
{
|
||||
struct _q_iter it;
|
||||
struct track *track;
|
||||
|
||||
file_writef(&tempq_file, "%u %u", queue->q_flags, queue_size(queue));
|
||||
_q_for_each(&queue->q_tracks, &it) {
|
||||
track = (struct track *)_q_iter_val(&it);
|
||||
file_writef(&tempq_file, " %u", track->tr_dbe.dbe_index);
|
||||
}
|
||||
file_writef(&tempq_file, "\n");
|
||||
}
|
||||
|
||||
|
||||
void tempq_init(struct queue_ops *ops)
|
||||
{
|
||||
unsigned int flags, count, j, id;
|
||||
unsigned int num, i;
|
||||
struct queue *queue;
|
||||
unsigned int num, i;
|
||||
|
||||
file_init(&deck_file, "deck", 1);
|
||||
if (!file_open(&deck_file, OPEN_READ))
|
||||
return;
|
||||
if (file_version(&deck_file) < 1)
|
||||
file_init(&tempq_file, "deck", 1);
|
||||
if (!file_open(&tempq_file, OPEN_READ) || file_version(&tempq_file) < 1)
|
||||
return;
|
||||
|
||||
file_readf(&deck_file, "%u", &num);
|
||||
file_readf(&tempq_file, "%u", &num);
|
||||
for (i = 0; i < num; i++) {
|
||||
file_readf(&deck_file, "%u %u", &flags, &count);
|
||||
queue = __tempq_alloc(NULL, flags);
|
||||
for (j = 0; j < count; j++) {
|
||||
file_readf(&deck_file, "%u", &id);
|
||||
queue_add(queue, track_get(id));
|
||||
}
|
||||
queue = __tempq_read_queue();
|
||||
queue->q_ops = ops;
|
||||
}
|
||||
file_close(&deck_file);
|
||||
file_close(&tempq_file);
|
||||
}
|
||||
|
||||
void tempq_deinit()
|
||||
|
@ -62,24 +83,16 @@ void tempq_deinit()
|
|||
|
||||
void tempq_save(struct queue *queue, enum queue_flags flag)
|
||||
{
|
||||
unsigned int i;
|
||||
GSList *cur;
|
||||
|
||||
if (!file_open(&deck_file, OPEN_WRITE))
|
||||
if (!file_open(&tempq_file, OPEN_WRITE))
|
||||
return;
|
||||
|
||||
file_writef(&deck_file, "%zu\n", g_slist_length(tempq_list));
|
||||
for (cur = tempq_list; cur; cur = g_slist_next(cur)) {
|
||||
queue = (struct queue *)cur->data;
|
||||
file_writef(&deck_file, "%u %zu", queue->q_flags, queue_size(queue));
|
||||
for (i = 0; i < queue_size(queue); i++) {
|
||||
file_writef(&deck_file, " %u",
|
||||
queue_at(queue, i)->tr_dbe.dbe_index);
|
||||
}
|
||||
file_writef(&deck_file, "\n");
|
||||
}
|
||||
file_writef(&tempq_file, "%zu\n", g_slist_length(tempq_list));
|
||||
for (cur = tempq_list; cur; cur = g_slist_next(cur))
|
||||
__tempq_write_queue((struct queue *)cur->data);
|
||||
|
||||
file_close(&deck_file);
|
||||
file_close(&tempq_file);
|
||||
}
|
||||
|
||||
struct queue *tempq_alloc(struct queue_ops *ops, unsigned int flags)
|
||||
|
|
Loading…
Reference in New Issue