diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/playlist.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/playlist.c b/src/playlist.c index 99feb28da..8929e417b 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -219,7 +219,12 @@ playlist_sync(struct playlist *playlist) playing anymore; ignore the event */ return; - if (pc_get_state() == PLAYER_STATE_STOP) + player_lock(); + enum player_state pc_state = pc_get_state(); + const struct song *pc_next_song = pc.next_song; + player_unlock(); + + if (pc_state == PLAYER_STATE_STOP) /* the player thread has stopped: check if playback should be restarted with the next song. That can happen if the playlist isn't filling the queue fast @@ -228,7 +233,7 @@ playlist_sync(struct playlist *playlist) else { /* check if the player thread has already started playing the queued song */ - if (pc.next_song == NULL && playlist->queued != -1) + if (pc_next_song == NULL && playlist->queued != -1) playlist_song_started(playlist); /* make sure the queued song is always set (if |