commit 2f589330f4858cf8f45f7d4a5c2f90e11eecc232 from: Omar Polo date: Thu Feb 17 09:49:09 2022 UTC implement main_playlist_resume to resume after stop commit - bfaa78978668ab4b8078802c3ac873a16e4357d6 commit + 2f589330f4858cf8f45f7d4a5c2f90e11eecc232 blob - 4c153998dca494438aaad84852e350bfc2544358 blob + 6992675c67b9569778f023bdc94632bbaa318a8a --- amused.c +++ amused.c @@ -394,6 +394,22 @@ main_play_song(const char *song) imsg_compose_event(iev_player, IMSG_PLAY, 0, 0, fd, path, sizeof(path)); return 1; +} + +void +main_playlist_resume(void) +{ + const char *song; + + if ((song = playlist_current()) == NULL) + song = playlist_advance(); + + for (;song != NULL; song = playlist_advance()) { + if (main_play_song(song)) + return; + + playlist_dropcurrent(); + } } void blob - ce92c23f936b012809b3081a4783a6873d5cf8bf blob + 2475ee20926c8e17979c97b4e5c97b23998e2707 --- amused.h +++ amused.h @@ -100,6 +100,7 @@ void imsg_event_add(struct imsgev *iev); int imsg_compose_event(struct imsgev *, uint16_t, uint32_t, pid_t, int, const void *, uint16_t); int main_send_player(uint16_t, int, const void *, uint16_t); +void main_playlist_resume(void); void main_playlist_advance(void); void main_playlist_previous(void); void main_restart_track(void); blob - 6323e068f5736f6fcf8c4501c5987c78a1c31b21 blob + d8e0f626db6bc19c15243ab660931a65ec79ca46 --- control.c +++ control.c @@ -256,7 +256,7 @@ control_dispatch_imsg(int fd, short event, void *bula) case IMSG_CTL_PLAY: switch (play_state) { case STATE_STOPPED: - main_playlist_advance(); + main_playlist_resume(); break; case STATE_PLAYING: /* do nothing */ @@ -270,7 +270,7 @@ control_dispatch_imsg(int fd, short event, void *bula) case IMSG_CTL_TOGGLE_PLAY: switch (play_state) { case STATE_STOPPED: - main_playlist_advance(); + main_playlist_resume(); break; case STATE_PLAYING: play_state = STATE_PAUSED;