diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmp/outputwriter.cpp | 2 | ||||
| -rw-r--r-- | src/qmmp/qmmpaudioengine.cpp | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/qmmp/outputwriter.cpp b/src/qmmp/outputwriter.cpp index 21074f57a..82b5924e9 100644 --- a/src/qmmp/outputwriter.cpp +++ b/src/qmmp/outputwriter.cpp @@ -296,8 +296,8 @@ void OutputWriter::run() while (!done && (recycler()->empty() || m_pause)) { - mutex()->unlock(); recycler()->cond()->wakeOne(); + mutex()->unlock(); recycler()->cond()->wait(recycler()->mutex()); mutex()->lock (); done = m_userStop || m_finish; diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp index 71f2fbc7c..0b13c0ab0 100644 --- a/src/qmmp/qmmpaudioengine.cpp +++ b/src/qmmp/qmmpaudioengine.cpp @@ -269,7 +269,9 @@ void QmmpAudioEngine::stop() // wake up threads if (m_output) { + m_output->mutex()->lock(); m_output->recycler()->cond()->wakeAll(); + m_output->mutex()->unlock(); if(m_output->isRunning()) m_output->wait(); delete m_output; @@ -480,7 +482,12 @@ void QmmpAudioEngine::run() m_next = false; if (m_finish) finish(); - m_output->recycler()->cond()->wakeAll(); + if(m_output) + { + m_output->mutex()->lock(); + m_output->recycler()->cond()->wakeAll(); + m_output->mutex()->unlock(); + } mutex()->unlock(); } |
