aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-10-10 09:51:34 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-10-10 09:51:34 +0000
commitfa722cca5c6c10a867d84ad8141a3986e1413091 (patch)
treed56c1904f7fd000d4353b1938df91da98b34027b
parent5f4a1ef29564a4a4568b471b5ed41b2ff2cd5b5e (diff)
downloadqmmp-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.cpp32
-rw-r--r--src/plugins/Input/cue/decoder_cue.h1
-rw-r--r--src/qmmp/decoder.h3
-rw-r--r--src/qmmp/soundcore.cpp7
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();