From cc01d8feb7ae39567746f85b1ec971dd7b54d0ae Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Fri, 25 May 2018 18:19:35 +0000 Subject: fixed regression git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7959 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmp/qmmpaudioengine.cpp | 21 +++++++++------------ src/qmmp/statehandler.cpp | 5 ++++- 2 files changed, 13 insertions(+), 13 deletions(-) (limited to 'src') 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 m = m_decoder->takeMetaData(); TrackInfo info(m_inputs[m_decoder]->path()); info.setValues(m); - StateHandler::instance()->dispatch(info); - m_trackInfo = QSharedPointer(new TrackInfo(info)); - } - if(m_inputs[m_decoder]->hasMetaData()) - { - QMap m = m_inputs[m_decoder]->takeMetaData(); - TrackInfo info(m_inputs[m_decoder]->path()); - info.setValues(m); - StateHandler::instance()->dispatch(info); - m_trackInfo = QSharedPointer(new TrackInfo(info)); + info.setDuration(m_decoder->totalTime()); + if(StateHandler::instance()->dispatch(info)) + m_trackInfo = QSharedPointer(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) { -- cgit v1.2.3-13-gbd6f