diff --git a/src/qml/qmlplayerproxy.cpp b/src/qml/qmlplayerproxy.cpp index 66791261678b..e35a9fc99465 100644 --- a/src/qml/qmlplayerproxy.cpp +++ b/src/qml/qmlplayerproxy.cpp @@ -40,6 +40,9 @@ QmlPlayerProxy::QmlPlayerProxy(BaseTrackPlayer* pTrackPlayer, QObject* parent) this, &QmlPlayerProxy::trackUnloaded); connect(this, &QmlPlayerProxy::trackChanged, this, &QmlPlayerProxy::slotTrackChanged); + if (m_pTrackPlayer && m_pTrackPlayer->getLoadedTrack()) { + slotTrackLoaded(pTrackPlayer->getLoadedTrack()); + } } void QmlPlayerProxy::loadTrackFromLocation(const QString& trackLocation, bool play) { @@ -115,13 +118,23 @@ void QmlPlayerProxy::slotTrackLoaded(TrackPointer pTrack) { } void QmlPlayerProxy::slotLoadingTrack(TrackPointer pNewTrack, TrackPointer pOldTrack) { - Q_UNUSED(pNewTrack); - Q_UNUSED(pOldTrack); + VERIFY_OR_DEBUG_ASSERT(pOldTrack == m_pCurrentTrack) { + qWarning() << "QML Player proxy was expected to contain " + << pOldTrack.get() << "as active track but got" + << m_pCurrentTrack.get(); + } + + if (pNewTrack.get() == m_pCurrentTrack.get()) { + emit trackLoading(); + return; + } + const TrackPointer pTrack = m_pCurrentTrack; if (pTrack != nullptr) { disconnect(pTrack.get(), nullptr, this, nullptr); } m_pCurrentTrack.reset(); + m_pCurrentTrack = pNewTrack; emit trackChanged(); emit trackLoading(); } diff --git a/src/qml/qmlwaveformoverview.cpp b/src/qml/qmlwaveformoverview.cpp index 4edf86639c04..54d2d1051ca2 100644 --- a/src/qml/qmlwaveformoverview.cpp +++ b/src/qml/qmlwaveformoverview.cpp @@ -35,7 +35,8 @@ void QmlWaveformOverview::setPlayer(QmlPlayerProxy* pPlayer) { m_pPlayer = pPlayer; - if (pPlayer != nullptr) { + if (m_pPlayer != nullptr) { + setCurrentTrack(m_pPlayer->internalTrackPlayer()->getLoadedTrack()); connect(m_pPlayer->internalTrackPlayer(), &BaseTrackPlayer::newTrackLoaded, this,