From 6309e44c86a9e7c8b35ce72ce4d05fc7ce4304c0 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sat, 20 Jul 2019 16:12:57 +0000 Subject: reworked pausing logic git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9001 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmp/outputwriter.cpp | 11 +++++------ src/qmmp/outputwriter_p.h | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) (limited to 'src') 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; -- cgit v1.2.3-13-gbd6f