aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-08-11 20:11:17 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-08-11 20:11:17 +0000
commit587abc36e75f795eb299da7c8487958a991fa2c4 (patch)
tree02a7816070ab0188f4983c0c76d8e602ae5e1414
parent8a93642a2e8cb6ff72c663522a56088ba7079066 (diff)
downloadqmmp-587abc36e75f795eb299da7c8487958a991fa2c4.tar.gz
qmmp-587abc36e75f795eb299da7c8487958a991fa2c4.tar.bz2
qmmp-587abc36e75f795eb299da7c8487958a991fa2c4.zip
fixed seeking
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1137 90c681e8-e032-0410-971d-27865f9a5e38
-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;