player/Thread: wake up the decoder when the pipe has run empty
This is another instance of the kludge we already have a few lines above that. It works around a deadlock/race condition revealed by commit 98a7c62d7a4f716d90af6d78e18d1a3b10bc54b3
This commit is contained in:
parent
edcd0b9913
commit
efb528f979
@ -1027,7 +1027,9 @@ Player::Run() noexcept
|
|||||||
/* wake up the decoder (just in case it's
|
/* wake up the decoder (just in case it's
|
||||||
waiting for space in the MusicBuffer) and
|
waiting for space in the MusicBuffer) and
|
||||||
wait for it */
|
wait for it */
|
||||||
|
// TODO: eliminate this kludge
|
||||||
dc.Signal();
|
dc.Signal();
|
||||||
|
|
||||||
dc.WaitForDecoder();
|
dc.WaitForDecoder();
|
||||||
} else if (IsDecoderAtNextSong()) {
|
} else if (IsDecoderAtNextSong()) {
|
||||||
/* at the beginning of a new song */
|
/* at the beginning of a new song */
|
||||||
@ -1049,6 +1051,12 @@ Player::Run() noexcept
|
|||||||
new PCM data in time: wait for the
|
new PCM data in time: wait for the
|
||||||
decoder */
|
decoder */
|
||||||
|
|
||||||
|
/* wake up the decoder (just in case it's
|
||||||
|
waiting for space in the MusicBuffer) and
|
||||||
|
wait for it */
|
||||||
|
// TODO: eliminate this kludge
|
||||||
|
dc.Signal();
|
||||||
|
|
||||||
dc.WaitForDecoder();
|
dc.WaitForDecoder();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user