diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-10-10 09:51:34 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-10-10 09:51:34 +0000 |
| commit | fa722cca5c6c10a867d84ad8141a3986e1413091 (patch) | |
| tree | d56c1904f7fd000d4353b1938df91da98b34027b | |
| parent | 5f4a1ef29564a4a4568b471b5ed41b2ff2cd5b5e (diff) | |
| download | qmmp-fa722cca5c6c10a867d84ad8141a3986e1413091.tar.gz qmmp-fa722cca5c6c10a867d84ad8141a3986e1413091.tar.bz2 qmmp-fa722cca5c6c10a867d84ad8141a3986e1413091.zip | |
added pause support in cue plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@577 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Input/cue/decoder_cue.cpp | 32 | ||||
| -rw-r--r-- | src/plugins/Input/cue/decoder_cue.h | 1 | ||||
| -rw-r--r-- | src/qmmp/decoder.h | 3 | ||||
| -rw-r--r-- | src/qmmp/soundcore.cpp | 7 |
4 files changed, 40 insertions, 3 deletions
diff --git a/src/plugins/Input/cue/decoder_cue.cpp b/src/plugins/Input/cue/decoder_cue.cpp index d988d9aba..31d921596 100644 --- a/src/plugins/Input/cue/decoder_cue.cpp +++ b/src/plugins/Input/cue/decoder_cue.cpp @@ -167,6 +167,37 @@ void DecoderCUE::stop() } } +void DecoderCUE::pause() +{ + if (m_output2) + { + m_output2->mutex()->lock (); + m_output2->pause(); + m_output2->mutex()->unlock(); + } + else if (m_decoder) + { + m_decoder->mutex()->lock (); + m_decoder->pause(); + m_decoder->mutex()->unlock(); + } + + // wake up threads + if (m_decoder) + { + m_decoder->mutex()->lock (); + m_decoder->cond()->wakeAll(); + m_decoder->mutex()->unlock(); + } + + if (m_output2) + { + m_output2->recycler()->mutex()->lock (); + m_output2->recycler()->cond()->wakeAll(); + m_output2->recycler()->mutex()->unlock(); + } +} + void DecoderCUE::run() { m_decoder->start(); @@ -200,6 +231,7 @@ void CUEStateHandler::dispatch(qint64 elapsed, void CUEStateHandler::dispatch(const QMap<Qmmp::MetaData, QString> &metaData) { //ignore media file metadata + Q_UNUSED(metaData) } void CUEStateHandler::dispatch(const Qmmp::State &state) diff --git a/src/plugins/Input/cue/decoder_cue.h b/src/plugins/Input/cue/decoder_cue.h index 4e0775151..d69e838a5 100644 --- a/src/plugins/Input/cue/decoder_cue.h +++ b/src/plugins/Input/cue/decoder_cue.h @@ -40,6 +40,7 @@ public: qint64 lengthInSeconds(); void seek(qint64); void stop(); + void pause(); private: // thread run function diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h index 42b2a8639..5691fe63b 100644 --- a/src/qmmp/decoder.h +++ b/src/qmmp/decoder.h @@ -44,8 +44,7 @@ public: virtual qint64 lengthInSeconds() = 0; virtual void seek(qint64) = 0; virtual void stop() = 0; - //virtual void pause() = 0; - //virtual void stop() = 0; + virtual void pause(){}; DecoderFactory *factory() const; QIODevice *input(); diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index 7742ca92d..df3a94167 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -200,11 +200,16 @@ void SoundCore::pause() m_output->pause(); m_output->mutex()->unlock(); } + else if (m_decoder) + { + m_decoder->mutex()->lock (); + m_decoder->pause(); + m_decoder->mutex()->unlock(); + } // wake up threads if (m_decoder) { - m_paused = !m_paused; m_decoder->mutex()->lock (); m_decoder->cond()->wakeAll(); m_decoder->mutex()->unlock(); |
