aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-07-20 16:12:57 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-07-20 16:12:57 +0000
commit6309e44c86a9e7c8b35ce72ce4d05fc7ce4304c0 (patch)
treec9d6e4356ce3c364f56824555931c8428d3af066 /src
parentf15e6147d688f892a26a15097d6ab711fc753299 (diff)
downloadqmmp-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.cpp11
-rw-r--r--src/qmmp/outputwriter_p.h2
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;