diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-02-14 00:28:11 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-02-14 00:28:11 +0100 |
| commit | 72de33c4f15144e7c597fad850510dd7da88a0f2 (patch) | |
| tree | 7d349ba78f168359866b98b9424238d50e58e7f0 /src/player.c | |
| parent | 12b6c9dfd009352e0bb7f8395abd3678e3bd6265 (diff) | |
| download | tmus-72de33c4f15144e7c597fad850510dd7da88a0f2.tar.gz tmus-72de33c4f15144e7c597fad850510dd7da88a0f2.zip | |
Refactored main.c into many files
Diffstat (limited to 'src/player.c')
| -rw-r--r-- | src/player.c | 65 |
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; |
