summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c40
1 files changed, 19 insertions, 21 deletions
diff --git a/src/main.c b/src/main.c
index e61665c..6dd4b1c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -548,9 +548,9 @@ track_input(wint_t c)
listnav_update_sel(&track_nav, track_nav.sel + 1);
return 1;
case KEY_ENTER:
- link = link_iter(tracks.next, track_nav.sel);
+ link = link_iter(playlist.next, track_nav.sel);
ASSERT(link != NULL);
- track = UPCAST(link, struct track);
+ track = UPCAST(link, struct ref)->data;
player->track = track;
player_play_track(track);
return 1;
@@ -848,7 +848,7 @@ main_input(wint_t c)
case L'w':
autoplay.enabled ^= 1;
break;
- case KEY_CTRL('s'):
+ case KEY_CTRL('w'):
autoplay.shuffle ^= 1;
break;
case L'b':
@@ -918,32 +918,30 @@ update_player(void)
player_update();
- if (!player->loaded && autoplay.enabled && playlist.next) {
+ if (list_empty(&playlist)) last = NULL;
+
+ /* dont start autoplay before the first song was chosen */
+ if (!player->loaded && autoplay.enabled && last) {
+ iter = NULL;
if (autoplay.shuffle) {
/* TODO better algorithm for random sequence */
index = rand() % list_len(&playlist);
- iter = link_iter(&playlist, index);
+ iter = link_iter(playlist.next, index);
ASSERT(iter != NULL);
- } else {
- if (last) {
- iter = playlist.next;
- for (; iter; iter = iter->next) {
- track = UPCAST(iter, struct ref)->data;
- if (track == last)
- break;
- }
- iter = iter->next;
- if (!iter) {
- last = NULL;
- return;
- }
- } else {
- iter = playlist.next;
+ } else if (last) {
+ iter = playlist.next;
+ for (; iter; iter = iter->next) {
+ track = UPCAST(iter, struct ref)->data;
+ if (track == last)
+ break;
}
+ iter = iter->next;
}
+ if (!iter) iter = playlist.next;
+
track = UPCAST(iter, struct ref)->data;
player_play_track(track);
- } else if (player->track) {
+ } else {
last = player->track;
}
}