core/playlist: Move playlist tracks into the playlist struct
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
a808cac04c
commit
1dd0b7c2aa
|
@ -40,6 +40,7 @@ void playlist_generic_set_callbacks(struct playlist_callbacks *cb)
|
|||
|
||||
void playlist_generic_init(struct playlist *playlist, struct queue_ops *ops)
|
||||
{
|
||||
g_queue_init(&playlist->pl_tracks);
|
||||
queue_init(&playlist->pl_queue, ops, playlist);
|
||||
playlist->pl_sort = NULL;
|
||||
playlist->pl_current = NULL;
|
||||
|
@ -150,7 +151,7 @@ void playlist_generic_clear(struct playlist *playlist)
|
|||
return;
|
||||
|
||||
n = playlist_size(playlist);
|
||||
g_queue_clear(&playlist->pl_queue.q_tracks);
|
||||
g_queue_clear(&playlist->pl_tracks);
|
||||
playlist->pl_length = 0;
|
||||
playlist->pl_current = NULL;
|
||||
if (callbacks)
|
||||
|
@ -164,10 +165,10 @@ bool playlist_generic_add(struct playlist *playlist, struct track *track)
|
|||
|
||||
playlist->pl_length += track->tr_length;
|
||||
if (playlist->pl_sort) {
|
||||
g_queue_insert_sorted(&playlist->pl_queue.q_tracks, track,
|
||||
g_queue_insert_sorted(&playlist->pl_tracks, track,
|
||||
__playlist_generic_less_than, playlist);
|
||||
} else
|
||||
g_queue_push_tail(&playlist->pl_queue.q_tracks, track);
|
||||
g_queue_push_tail(&playlist->pl_tracks, track);
|
||||
|
||||
if (callbacks)
|
||||
callbacks->pl_cb_added(playlist, track);
|
||||
|
@ -180,7 +181,7 @@ bool playlist_generic_add_front(struct playlist *playlist, struct track *track)
|
|||
return false;
|
||||
|
||||
playlist->pl_length += track->tr_length;
|
||||
g_queue_push_head(&playlist->pl_queue.q_tracks, track);
|
||||
g_queue_push_head(&playlist->pl_tracks, track);
|
||||
if (callbacks)
|
||||
callbacks->pl_cb_added(playlist, track);
|
||||
return true;
|
||||
|
@ -196,7 +197,7 @@ bool playlist_generic_remove(struct playlist *playlist, struct track *track)
|
|||
while (playlist_current_track(playlist) == track)
|
||||
playlist_current_previous(playlist);
|
||||
|
||||
count = g_queue_remove_all(&playlist->pl_queue.q_tracks, track);
|
||||
count = g_queue_remove_all(&playlist->pl_tracks, track);
|
||||
playlist->pl_length -= (count * track->tr_length);
|
||||
|
||||
if (callbacks)
|
||||
|
@ -234,9 +235,7 @@ void playlist_generic_resort(struct playlist *playlist)
|
|||
if (!playlist || !playlist->pl_sort)
|
||||
return;
|
||||
|
||||
g_queue_sort(&playlist->pl_queue.q_tracks, __playlist_generic_less_than,
|
||||
playlist);
|
||||
|
||||
g_queue_sort(&playlist->pl_tracks, __playlist_generic_less_than, playlist);
|
||||
playlist_generic_update(playlist, NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,12 +22,10 @@ static inline void __queue_deinit(struct queue *queue)
|
|||
void queue_init(struct queue *queue, const struct queue_ops *ops, void *data)
|
||||
{
|
||||
queue->q_ops = ops;
|
||||
g_queue_init(&queue->q_tracks);
|
||||
queue->q_private = __queue_init(queue, data);
|
||||
}
|
||||
|
||||
void queue_deinit(struct queue *queue)
|
||||
{
|
||||
g_queue_clear(&queue->q_tracks);
|
||||
__queue_deinit(queue);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
static inline playlist_iter playlist_iter_get(struct playlist *playlist,
|
||||
unsigned int n)
|
||||
{
|
||||
return playlist ? g_queue_peek_nth_link(&playlist->pl_queue.q_tracks, n) : NULL;
|
||||
return playlist ? g_queue_peek_nth_link(&playlist->pl_tracks, n) : NULL;
|
||||
}
|
||||
|
||||
/* Called to advance the requested playlist iterator. */
|
||||
|
@ -31,7 +31,7 @@ static inline struct track *playlist_iter_track(playlist_iter iter)
|
|||
static inline int playlist_iter_index(struct playlist *playlist,
|
||||
playlist_iter iter)
|
||||
{
|
||||
return (playlist && iter) ? g_queue_link_index(&playlist->pl_queue.q_tracks, iter) : -1;
|
||||
return (playlist && iter) ? g_queue_link_index(&playlist->pl_tracks, iter) : -1;
|
||||
}
|
||||
|
||||
/* Called to iterate over the entire playlist. */
|
||||
|
|
|
@ -48,6 +48,7 @@ struct playlist {
|
|||
gchar *pl_name; /* This playlist's name. */
|
||||
unsigned int pl_id; /* This playlist's identifier. */
|
||||
|
||||
GQueue pl_tracks; /* This playlist's queue of tracks. */
|
||||
unsigned int pl_length; /* This playlist's length, in seconds. */
|
||||
bool pl_random; /* This playlist's random setting. */
|
||||
playlist_iter pl_current; /* This playlist's current track. */
|
||||
|
@ -89,14 +90,13 @@ struct playlist_type {
|
|||
/* Called to check if the playlist contains a specific track. */
|
||||
static inline bool playlist_has(struct playlist *playlist, struct track *track)
|
||||
{
|
||||
return playlist ? g_queue_find(&playlist->pl_queue.q_tracks, track) != NULL :
|
||||
false;
|
||||
return playlist ? g_queue_find(&playlist->pl_tracks, track) != NULL : false;
|
||||
}
|
||||
|
||||
/* Called to find the size of a playlist. */
|
||||
static inline unsigned int playlist_size(struct playlist *playlist)
|
||||
{
|
||||
return playlist ? g_queue_get_length(&playlist->pl_queue.q_tracks) : 0;
|
||||
return playlist ? g_queue_get_length(&playlist->pl_tracks) : 0;
|
||||
}
|
||||
|
||||
/* Called to clear the sort order of the playlist. */
|
||||
|
|
|
@ -24,7 +24,6 @@ struct queue_ops {
|
|||
|
||||
|
||||
struct queue {
|
||||
GQueue q_tracks; /* The queue's list of tracks. */
|
||||
void *q_private; /* The queue's private data. */
|
||||
|
||||
const struct queue_ops *q_ops; /* The queue's operations vector. */
|
||||
|
|
Loading…
Reference in New Issue