aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-04-12 04:16:50 +0000
committerEric Wong <normalperson@yhbt.net>2008-04-12 04:16:50 +0000
commitf0e28ede4da3da8754f48ef5af1b654792e3364c (patch)
tree04f40ad027f06eb473ce5606927c1887bb4f123b
parent9cfb4c0390bde730011874cdd8cc62fb0a5da6ea (diff)
downloadmpd-f0e28ede4da3da8754f48ef5af1b654792e3364c.tar.gz
mpd-f0e28ede4da3da8754f48ef5af1b654792e3364c.tar.xz
mpd-f0e28ede4da3da8754f48ef5af1b654792e3364c.zip
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
-rw-r--r--src/player.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/player.c b/src/player.c
index 07c074060..5ef35f214 100644
--- a/src/player.c
+++ b/src/player.c
@@ -281,6 +281,7 @@ void setQueueState(int queueState)
PlayerControl *pc = &(getPlayerData()->playerControl);
pc->queueState = queueState;
+ wakeup_player_nb();
}
void playerQueueLock(void)