Commit f0e28ede authored by Max Kellermann's avatar Max Kellermann Committed by Eric Wong

fix deadlock at end of song

Now that we do proper locking and signalling instead of continuous polling for IPC, a deadlock was found: at the end of a song, the player thread waits until the main thread sets pc->queueState from PLAYER_QUEUE_DECODE to PLAYER_QUEUE_PLAY. He is never woken up, since syncPlaylistWithQueue() does not activate the notification. I added wakeup_player_nb() to setQueueState(), since the player must be signalled whenever pc->queueState changes. git-svn-id: https://svn.musicpd.org/mpd/trunk@7303 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent 9cfb4c03
...@@ -281,6 +281,7 @@ void setQueueState(int queueState) ...@@ -281,6 +281,7 @@ void setQueueState(int queueState)
PlayerControl *pc = &(getPlayerData()->playerControl); PlayerControl *pc = &(getPlayerData()->playerControl);
pc->queueState = queueState; pc->queueState = queueState;
wakeup_player_nb();
} }
void playerQueueLock(void) void playerQueueLock(void)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment