player_thread: reset pc.next_song only if queued
When we reset pc.next_song if there is no song queued, this might cause a race condition: the next song to be played is cleared, while pc.command was already set. Clear the "next_song" only if there is a song queued for the current do_play() invocation.
This commit is contained in:
parent
40393ae64f
commit
799d1c9dc2
@ -92,7 +92,6 @@ static void player_stop_decoder(void)
|
||||
{
|
||||
dc_stop(&pc.notify);
|
||||
pc.state = PLAYER_STATE_STOP;
|
||||
pc.next_song = NULL;
|
||||
event_pipe_emit(PIPE_EVENT_PLAYLIST);
|
||||
}
|
||||
|
||||
@ -511,6 +510,11 @@ static void do_play(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (player.queued) {
|
||||
assert(pc.next_song != NULL);
|
||||
pc.next_song = NULL;
|
||||
}
|
||||
|
||||
player_stop_decoder();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user