aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-05-25 18:19:35 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-05-25 18:19:35 +0000
commitcc01d8feb7ae39567746f85b1ec971dd7b54d0ae (patch)
treec32a52fcc9fe165fc1fd6d99cba7a158cba5fc2d /src
parent9e0db5ae888a50817482dfd0ec94e8036d354399 (diff)
downloadqmmp-cc01d8feb7ae39567746f85b1ec971dd7b54d0ae.tar.gz
qmmp-cc01d8feb7ae39567746f85b1ec971dd7b54d0ae.tar.bz2
qmmp-cc01d8feb7ae39567746f85b1ec971dd7b54d0ae.zip
fixed regression
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7959 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/qmmp/qmmpaudioengine.cpp21
-rw-r--r--src/qmmp/statehandler.cpp5
2 files changed, 13 insertions, 13 deletions
diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp
index 8bb13cf24..719c07de1 100644
--- a/src/qmmp/qmmpaudioengine.cpp
+++ b/src/qmmp/qmmpaudioengine.cpp
@@ -376,24 +376,21 @@ void QmmpAudioEngine::run()
m_output_at = 0;
}
//metadata
+ if(m_inputs[m_decoder]->hasMetaData())
+ m_decoder->addMetaData(m_inputs[m_decoder]->takeMetaData());
+
+ if(m_inputs[m_decoder]->hasStreamInfo())
+ StateHandler::instance()->dispatch(m_inputs[m_decoder]->takeStreamInfo());
+
if(m_decoder->hasMetaData())
{
QMap<Qmmp::MetaData, QString> m = m_decoder->takeMetaData();
TrackInfo info(m_inputs[m_decoder]->path());
info.setValues(m);
- StateHandler::instance()->dispatch(info);
- m_trackInfo = QSharedPointer<TrackInfo>(new TrackInfo(info));
- }
- if(m_inputs[m_decoder]->hasMetaData())
- {
- QMap<Qmmp::MetaData, QString> m = m_inputs[m_decoder]->takeMetaData();
- TrackInfo info(m_inputs[m_decoder]->path());
- info.setValues(m);
- StateHandler::instance()->dispatch(info);
- m_trackInfo = QSharedPointer<TrackInfo>(new TrackInfo(info));
+ info.setDuration(m_decoder->totalTime());
+ if(StateHandler::instance()->dispatch(info))
+ m_trackInfo = QSharedPointer<TrackInfo>(new TrackInfo(info));
}
- if(m_inputs[m_decoder]->hasStreamInfo())
- StateHandler::instance()->dispatch(m_inputs[m_decoder]->takeStreamInfo());
//wait more data
if(m_inputs[m_decoder]->isWaiting())
{
diff --git a/src/qmmp/statehandler.cpp b/src/qmmp/statehandler.cpp
index c5d0aa621..ecaea3634 100644
--- a/src/qmmp/statehandler.cpp
+++ b/src/qmmp/statehandler.cpp
@@ -108,13 +108,16 @@ bool StateHandler::dispatch(const TrackInfo &info)
if(m_info.isEmpty() || m_info.path() == info.path())
{
- TrackInfo tmp = info;
+ TrackInfo tmp = m_info;
+ tmp.setPath(info.path());
if(info.parts() & TrackInfo::MetaData)
tmp.setValues(info.metaData());
if(info.parts() & TrackInfo::Properties)
tmp.setValues(info.properties());
if(info.parts() & TrackInfo::ReplayGainInfo)
tmp.setValues(info.replayGainInfo());
+ if(info.duration() > 0)
+ tmp.setDuration(info.duration());
if(m_info != tmp)
{