summaryrefslogtreecommitdiffstats
path: root/src/player.c
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2022-02-14 00:28:11 +0100
committerLouis Burda <quent.burda@gmail.com>2022-02-14 00:28:11 +0100
commit72de33c4f15144e7c597fad850510dd7da88a0f2 (patch)
tree7d349ba78f168359866b98b9424238d50e58e7f0 /src/player.c
parent12b6c9dfd009352e0bb7f8395abd3678e3bd6265 (diff)
downloadtmus-72de33c4f15144e7c597fad850510dd7da88a0f2.tar.gz
tmus-72de33c4f15144e7c597fad850510dd7da88a0f2.zip
Refactored main.c into many files
Diffstat (limited to 'src/player.c')
-rw-r--r--src/player.c65
1 files changed, 33 insertions, 32 deletions
diff --git a/src/player.c b/src/player.c
index 2a2b8a9..41acbc9 100644
--- a/src/player.c
+++ b/src/player.c
@@ -24,6 +24,7 @@ struct player *player;
static void player_clear_msg(void);
static int handle_mpd_status(int status);
+static void player_play_next(struct track *track);
static void
player_clear_msg(void)
@@ -53,6 +54,37 @@ handle_mpd_status(int status)
}
void
+player_play_next(struct track *prev)
+{
+ struct link *iter;
+ struct track *track;
+ int index;
+
+ if (list_empty(&player->playlist))
+ return;
+
+ iter = NULL;
+ if (player->shuffle) {
+ /* TODO better algorithm for random sequence */
+ index = rand() % list_len(&player->playlist);
+ iter = list_at(&player->playlist, index);
+ ASSERT(iter != NULL);
+ } else if (player->loaded) {
+ for (LIST_ITER(&player->playlist, iter)) {
+ track = UPCAST(iter, struct ref)->data;
+ if (track == prev)
+ break;
+ }
+ if (iter) iter = iter->next;
+ }
+
+ if (!iter) iter = list_at(&player->playlist, 0);
+ track = UPCAST(iter, struct ref)->data;
+
+ player_play_track(track);
+}
+
+void
player_init(void)
{
player = malloc(sizeof(struct player));
@@ -87,7 +119,7 @@ player_init(void)
}
void
-player_free(void)
+player_deinit(void)
{
struct link *iter;
@@ -105,37 +137,6 @@ player_free(void)
}
void
-player_play_next(struct track *prev)
-{
- struct link *iter;
- struct track *track;
- int index;
-
- if (list_empty(&player->playlist))
- return;
-
- iter = NULL;
- if (player->shuffle) {
- /* TODO better algorithm for random sequence */
- index = rand() % list_len(&player->playlist);
- iter = list_at(&player->playlist, index);
- ASSERT(iter != NULL);
- } else if (player->loaded) {
- for (LIST_ITER(&player->playlist, iter)) {
- track = UPCAST(iter, struct ref)->data;
- if (track == prev)
- break;
- }
- if (iter) iter = iter->next;
- }
-
- if (!iter) iter = list_at(&player->playlist, 0);
- track = UPCAST(iter, struct ref)->data;
-
- player_play_track(track);
-}
-
-void
player_update(void)
{
struct mpd_status *status;