diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-07-20 16:12:57 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-07-20 16:12:57 +0000 |
| commit | 6309e44c86a9e7c8b35ce72ce4d05fc7ce4304c0 (patch) | |
| tree | c9d6e4356ce3c364f56824555931c8428d3af066 /src | |
| parent | f15e6147d688f892a26a15097d6ab711fc753299 (diff) | |
| download | qmmp-6309e44c86a9e7c8b35ce72ce4d05fc7ce4304c0.tar.gz qmmp-6309e44c86a9e7c8b35ce72ce4d05fc7ce4304c0.tar.bz2 qmmp-6309e44c86a9e7c8b35ce72ce4d05fc7ce4304c0.zip | |
reworked pausing logic
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9001 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmp/outputwriter.cpp | 11 | ||||
| -rw-r--r-- | src/qmmp/outputwriter_p.h | 2 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/qmmp/outputwriter.cpp b/src/qmmp/outputwriter.cpp index 25889796d..1e91fe35f 100644 --- a/src/qmmp/outputwriter.cpp +++ b/src/qmmp/outputwriter.cpp @@ -239,24 +239,23 @@ void OutputWriter::run() while (!done) { m_mutex.lock (); - if(m_pause != m_prev_pause) + if(m_pause != m_paused) { - if(m_pause) + m_paused = m_pause; + if(m_paused) { Visual::clearBuffer(); m_output->suspend(); m_mutex.unlock(); - m_prev_pause = m_pause; continue; } else m_output->resume(); - m_prev_pause = m_pause; } recycler()->mutex()->lock (); done = m_user_stop || (m_finish && recycler()->empty()); - while (!done && (recycler()->empty() || m_pause)) + while (!done && (recycler()->empty() || m_paused)) { recycler()->cond()->wakeOne(); m_mutex.unlock(); @@ -315,7 +314,7 @@ void OutputWriter::run() } output_at = b->samples * m_output->sampleSize(); - while (l < output_at && !m_pause && !m_prev_pause) + while (l < output_at && !m_pause && !m_paused) { m_mutex.lock(); if(m_skip) diff --git a/src/qmmp/outputwriter_p.h b/src/qmmp/outputwriter_p.h index 591cf90a3..36b26639c 100644 --- a/src/qmmp/outputwriter_p.h +++ b/src/qmmp/outputwriter_p.h @@ -110,7 +110,7 @@ private: std::atomic_bool m_pause = ATOMIC_VAR_INIT(false); std::atomic_bool m_muted = ATOMIC_VAR_INIT(false); std::atomic_bool m_finish = ATOMIC_VAR_INIT(false); - bool m_prev_pause = false; + bool m_paused = false; bool m_useEq = false; qint64 m_totalWritten = 0, m_currentMilliseconds = -1; QmmpSettings *m_settings; |
