core/queue: Call g_queue_*() functions directly

This is a first step to removing core/containers/queue

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2016-04-02 14:14:36 -04:00 committed by Anna Schumaker
parent e8d7576704
commit 6bb08ddbaa
2 changed files with 41 additions and 17 deletions

View File

@ -51,6 +51,34 @@ static inline unsigned int __queue_added(struct queue *queue,
return pos;
}
static inline unsigned int __queue_add_head(struct queue *queue,
struct track *track)
{
g_queue_push_head(&queue->q_tracks._queue, track);
return __queue_added(queue, track, 0);
}
static inline unsigned int __queue_add_tail(struct queue *queue,
struct track *track)
{
g_queue_push_tail(&queue->q_tracks._queue, track);
return __queue_added(queue, track, queue_size(queue) - 1);
}
static inline unsigned int __queue_add_sorted(struct queue *queue,
struct track *track)
{
struct _q_iter it;
_q_for_each(&queue->q_tracks, &it) {
if (track_less_than(_q_iter_val(&it), track, queue->q_sort) > 0) {
g_queue_insert_before(&queue->q_tracks._queue, it.it_iter, track);
return __queue_added(queue, track, it.it_pos);
}
}
return __queue_add_tail(queue, track);
}
static inline bool __queue_erase(struct queue *queue, struct _q_iter *it)
{
struct track *track = (struct track *)_q_iter_val(it);
@ -62,12 +90,14 @@ static inline bool __queue_erase(struct queue *queue, struct _q_iter *it)
static inline void __queue_remove(struct queue *queue, struct _q_iter *it)
{
struct track *track = (struct track *)_q_iter_val(it);
unsigned int pos = it->it_pos;
struct track *track = (struct track *)_q_remove_it(&queue->q_tracks, it);
GList *link = it->it_iter;
_q_iter_prev(it);
g_queue_delete_link(&queue->q_tracks._queue, link);
queue->q_length -= track->tr_length;
if (queue->q_cur.it_pos == pos)
_q_iter_prev(&queue->q_cur);
if (queue->q_ops)
queue->q_ops->qop_removed(queue, pos);
}
@ -112,7 +142,7 @@ void queue_init(struct queue *queue, unsigned int flags,
queue->q_cur.it_pos = -1;
queue->q_cur.it_iter = NULL;
_q_init(&queue->q_tracks);
g_queue_init(&queue->q_tracks._queue);
queue->q_private = __queue_init(queue);
}
@ -139,17 +169,11 @@ void queue_unset_flag(struct queue *queue, enum queue_flags flag)
unsigned int queue_add(struct queue *queue, struct track *track)
{
unsigned int pos;
if (queue_has_flag(queue, Q_ADD_FRONT))
pos = _q_add_head(&queue->q_tracks, track);
else if (queue->q_sort)
pos = _q_add_sorted(&queue->q_tracks, track,
track_less_than, queue->q_sort);
else
pos = _q_add_tail(&queue->q_tracks, track);
return __queue_added(queue, track, pos);
return __queue_add_head(queue, track);
if (queue->q_sort)
return __queue_add_sorted(queue, track);
return __queue_add_tail(queue, track);
}
void queue_erase(struct queue *queue, unsigned int index)
@ -186,7 +210,7 @@ void queue_clear(struct queue *queue)
{
unsigned int n = queue_size(queue);
_q_clear(&queue->q_tracks);
g_queue_clear(&queue->q_tracks._queue);
__queue_clear(queue, n);
}
@ -235,7 +259,7 @@ struct track *queue_next(struct queue *queue)
void queue_resort(struct queue *queue)
{
_q_sort(&queue->q_tracks, track_less_than, queue->q_sort);
g_queue_sort(&queue->q_tracks._queue, track_less_than, queue->q_sort);
for (unsigned int i = 0; i < queue_size(queue); i++)
__queue_updated(queue, i);

View File

@ -87,7 +87,7 @@ static inline bool queue_has_flag(struct queue *queue, enum queue_flags flag)
/* Called to find the size of the queue. */
static inline unsigned int queue_size(struct queue *queue)
{
return _q_size(&queue->q_tracks);
return g_queue_get_length(&queue->q_tracks._queue);
}
/* Called to access the queued track at a given index. */