output/Thread: ensure pending tags are flushed in all cases
Fixes hanging playback with soxr resampler. Closes #139, #141
This commit is contained in:
parent
3b23cf0258
commit
b111a8fe8d
2
NEWS
2
NEWS
|
@ -5,6 +5,8 @@ ver 0.20.12 (not yet released)
|
||||||
- vorbis: fix Tremor support
|
- vorbis: fix Tremor support
|
||||||
* player
|
* player
|
||||||
- log message when decoder is too slow
|
- log message when decoder is too slow
|
||||||
|
* output
|
||||||
|
- fix hanging playback with soxr resampler
|
||||||
|
|
||||||
ver 0.20.11 (2017/10/18)
|
ver 0.20.11 (2017/10/18)
|
||||||
* storage
|
* storage
|
||||||
|
|
|
@ -271,9 +271,9 @@ try {
|
||||||
inline bool
|
inline bool
|
||||||
AudioOutput::PlayChunk()
|
AudioOutput::PlayChunk()
|
||||||
{
|
{
|
||||||
if (tags) {
|
// ensure pending tags are flushed in all cases
|
||||||
const auto *tag = source.ReadTag();
|
const auto *tag = source.ReadTag();
|
||||||
if (tag != nullptr) {
|
if (tags && tag != nullptr) {
|
||||||
const ScopeUnlock unlock(mutex);
|
const ScopeUnlock unlock(mutex);
|
||||||
try {
|
try {
|
||||||
ao_plugin_send_tag(this, *tag);
|
ao_plugin_send_tag(this, *tag);
|
||||||
|
@ -282,7 +282,6 @@ AudioOutput::PlayChunk()
|
||||||
name, plugin.name);
|
name, plugin.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
while (command == Command::NONE) {
|
while (command == Command::NONE) {
|
||||||
const auto data = source.PeekData();
|
const auto data = source.PeekData();
|
||||||
|
|
Loading…
Reference in New Issue