diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-06-26 13:15:59 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-06-26 13:15:59 +0000 |
| commit | 2a332a2fdefbac806f54b7842e77fccbd53ad19b (patch) | |
| tree | cd846ab32b1fb28c865f2a84a20f73df4f1d31ab /src | |
| parent | dc751e374cfd11998c2cc9b2305912b422f56cb7 (diff) | |
| download | qmmp-2a332a2fdefbac806f54b7842e77fccbd53ad19b.tar.gz qmmp-2a332a2fdefbac806f54b7842e77fccbd53ad19b.tar.bz2 qmmp-2a332a2fdefbac806f54b7842e77fccbd53ad19b.zip | |
improved audio output
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@979 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmp/output.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/qmmp/output.cpp b/src/qmmp/output.cpp index 61c9658e9..15c75999f 100644 --- a/src/qmmp/output.cpp +++ b/src/qmmp/output.cpp @@ -157,7 +157,7 @@ void Output::run() bool done = FALSE; Buffer *b = 0; - qint64 l = 0; + qint64 l, m = 0; dispatch(Qmmp::Playing); @@ -189,9 +189,20 @@ void Output::run() { dispatchVisual(b, m_totalWritten, m_channels, m_precision); changeVolume(b->data, b->nbytes, m_channels); - if ((l = writeAudio(b->data, b->nbytes)) > 0) - m_totalWritten += l; - else + l = 0; + m = 0; + while (l < b->nbytes) + { + m = writeAudio(b->data + l, b->nbytes - l); + if(m >= 0) + { + m_totalWritten += m; + l+= m; + } + else + break; + } + if(m < 0) break; } mutex()->lock(); |
