From 3503bb88cdb79aa9114b88f7fe5c8478f824caf6 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sat, 27 Sep 2008 17:41:20 +0000 Subject: send metadata in play state only git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@567 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmp/statehandler.cpp | 13 ++++++++++++- src/qmmp/statehandler.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/qmmp/statehandler.cpp b/src/qmmp/statehandler.cpp index 3f2fe19b9..eceed5f76 100644 --- a/src/qmmp/statehandler.cpp +++ b/src/qmmp/statehandler.cpp @@ -34,6 +34,7 @@ StateHandler::StateHandler(QObject *parent) m_frequency = 0; m_precision = 0; m_channels = 0; + m_sendMeta = FALSE; m_state = Qmmp::Stopped; } @@ -92,7 +93,10 @@ void StateHandler::dispatch(const QMap &metaData) if (m_metaData != tmp) { m_metaData = tmp; - emit metaDataChanged (); + if (m_state == Qmmp::Playing) //send metadata in play state only + emit metaDataChanged (); + else + m_sendMeta = TRUE; } m_mutex.unlock(); } @@ -108,6 +112,7 @@ void StateHandler::dispatch(const Qmmp::State &state) qPrintable(states.at(state)), qPrintable(states.at(m_state))); m_state = state; + //clear QList clearStates; clearStates << Qmmp::Stopped << Qmmp::NormalError << Qmmp::FatalError; @@ -118,9 +123,15 @@ void StateHandler::dispatch(const Qmmp::State &state) m_frequency = 0; m_precision = 0; m_channels = 0; + m_sendMeta = FALSE; m_metaData.clear(); } emit stateChanged(state); + if(m_state == Qmmp::Playing && m_sendMeta) + { + m_sendMeta = FALSE; + emit metaDataChanged (); + } } m_mutex.unlock(); } diff --git a/src/qmmp/statehandler.h b/src/qmmp/statehandler.h index 8d755a35c..6be225b4e 100644 --- a/src/qmmp/statehandler.h +++ b/src/qmmp/statehandler.h @@ -79,6 +79,7 @@ private: QMap m_metaData; Qmmp::State m_state; QMutex m_mutex; + bool m_sendMeta; }; -- cgit v1.2.3-13-gbd6f