aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qmmp/statehandler.cpp13
-rw-r--r--src/qmmp/statehandler.h1
2 files changed, 13 insertions, 1 deletions
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<Qmmp::MetaData, QString> &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 <Qmmp::State> 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 <Qmmp::MetaData, QString> m_metaData;
Qmmp::State m_state;
QMutex m_mutex;
+ bool m_sendMeta;
};