aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qmmp/decoder.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp
index 61cd602da..59439c7f0 100644
--- a/src/qmmp/decoder.cpp
+++ b/src/qmmp/decoder.cpp
@@ -307,6 +307,10 @@ void Decoder::run()
seekAudio(_m_seekTime + _m_offset);
_m_totalBytes = _m_seekTime * _m_freq * _m_bps * _m_chan / 8000;
_m_seekTime = -1;
+ output()->recycler()->mutex()->lock ();
+ while(output()->recycler()->used() > 1)
+ output()->recycler()->done();
+ output()->recycler()->mutex()->unlock ();
}
len = readAudio((char *)(_m_output_buf + _m_output_at), Qmmp::globalBufferSize() - _m_output_at);
@@ -365,7 +369,8 @@ void Decoder::flush(bool final)
output()->recycler()->mutex()->lock ();
if(_m_seekTime >= 0)
{
- output()->recycler()->clear();
+ while(output()->recycler()->used() > 1)
+ output()->recycler()->done();
output()->recycler()->mutex()->unlock ();
_m_output_at = 0;
break;