diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-08-11 20:11:17 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-08-11 20:11:17 +0000 |
| commit | 587abc36e75f795eb299da7c8487958a991fa2c4 (patch) | |
| tree | 02a7816070ab0188f4983c0c76d8e602ae5e1414 | |
| parent | 8a93642a2e8cb6ff72c663522a56088ba7079066 (diff) | |
| download | qmmp-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.cpp | 7 |
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; |
