summaryrefslogtreecommitdiffstats
path: root/src/player.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/player.c')
-rw-r--r--src/player.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/player.c b/src/player.c
index f41a395..2a0c717 100644
--- a/src/player.c
+++ b/src/player.c
@@ -3,19 +3,21 @@
#include "list.h"
#include "data.h"
+#include <stdlib.h>
+
static bool player_history_contains(struct track *cmp, int depth);
-static struct track *playlist_track_next_unused(struct link *start);
+static struct track *playlist_track_next_unused(struct list_link *start);
static struct track *player_next_from_playlist(void);
bool
player_history_contains(struct track *cmp, int depth)
{
- struct link *link;
+ struct list_link *link;
struct track *track;
link = list_back(&player.history);
while (LIST_INNER(link) && depth-- > 0) {
- track = UPCAST(link, struct track, link_hs);
+ track = LIST_UPCAST(link, struct track, link_hs);
if (track == cmp)
return true;
link = link->prev;
@@ -25,10 +27,10 @@ player_history_contains(struct track *cmp, int depth)
}
struct track *
-playlist_track_next_unused(struct link *start)
+playlist_track_next_unused(struct list_link *start)
{
struct track *track;
- struct link *link;
+ struct list_link *link;
bool in_history;
int len;
@@ -39,7 +41,7 @@ playlist_track_next_unused(struct link *start)
link = start;
while (LIST_INNER(link)) {
- track = UPCAST(link, struct track, link_pl);
+ track = LIST_UPCAST(link, struct track, link_pl);
in_history = player_history_contains(track, len - 2);
if (track != player.track && !in_history)
@@ -59,7 +61,7 @@ playlist_track_next_unused(struct link *start)
struct track *
player_next_from_playlist(void)
{
- struct link *link;
+ struct list_link *link;
int index;
if (list_empty(&player.playlist))
@@ -70,7 +72,7 @@ player_next_from_playlist(void)
link = list_at(&player.playlist, index);
return playlist_track_next_unused(link);
} else {
- if (player.track && link_inuse(&player.track->link_pl)) {
+ if (player.track && list_link_inuse(&player.track->link_pl)) {
index = list_index(&player.playlist,
&player.track->link_pl);
ASSERT(index >= 0);
@@ -80,7 +82,7 @@ player_next_from_playlist(void)
index = 0;
}
link = list_at(&player.playlist, index);
- return UPCAST(link, struct track, link_pl);
+ return LIST_UPCAST(link, struct track, link_pl);
}
return NULL;
@@ -100,9 +102,9 @@ player_next_from_playlist(void)
void
player_add_history(struct track *new)
{
- if (!link_inuse(&new->link_hs)) {
- link_pop(&new->link_hs);
- list_push_back(&player.history, &new->link_hs);
+ if (!list_link_inuse(&new->link_hs)) {
+ list_link_pop(&new->link_hs);
+ list_insert_back(&player.history, &new->link_hs);
}
}
@@ -116,13 +118,13 @@ player_add_history(struct track *new)
int
player_prev(void)
{
- struct link *next;
+ struct list_link *next;
struct track *track;
if (list_empty(&player.history))
return PLAYER_ERR;
- if (!player.track || !link_inuse(&player.track->link_hs)) {
+ if (!player.track || !list_link_inuse(&player.track->link_hs)) {
next = list_back(&player.history);
} else if (LIST_INNER(player.track->link_hs.prev)) {
next = player.track->link_hs.prev;
@@ -130,7 +132,7 @@ player_prev(void)
return PLAYER_ERR;
}
- track = UPCAST(next, struct track, link_hs);
+ track = LIST_UPCAST(next, struct track, link_hs);
player_play_track(track, false);
return PLAYER_OK;
@@ -140,17 +142,17 @@ int
player_next(void)
{
struct track *next_track;
- struct link *link;
+ struct list_link *link;
bool new_entry;
- if (player.track && link_inuse(&player.track->link_hs)
+ if (player.track && list_link_inuse(&player.track->link_hs)
&& LIST_INNER(player.track->link_hs.next)) {
- next_track = UPCAST(player.track->link_hs.next,
+ next_track = LIST_UPCAST(player.track->link_hs.next,
struct track, link_hs);
new_entry = false;
} else if (!list_empty(&player.queue)) {
link = list_pop_front(&player.queue);
- next_track = UPCAST(link, struct track, link_pq);
+ next_track = LIST_UPCAST(link, struct track, link_pq);
new_entry = true;
} else {
next_track = player_next_from_playlist();