From: APTX Date: Wed, 1 Mar 2017 19:26:03 +0000 (+0100) Subject: Make Player aware of currentSource changes X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=1abb303d6937794b360c382dcb520ea5d6f0275a;p=aniplayer.git Make Player aware of currentSource changes --- diff --git a/backendplugins/backend_mpv/backendmpv.cpp b/backendplugins/backend_mpv/backendmpv.cpp index d17a384..58bf9cb 100644 --- a/backendplugins/backend_mpv/backendmpv.cpp +++ b/backendplugins/backend_mpv/backendmpv.cpp @@ -86,6 +86,7 @@ bool MpvInstance::open(const QUrl &source) { const char *args[] = {"loadfile", tmp.constData(), nullptr}; mpv_command_async(m_handle, 1, args); pause(); + m_currentlyLoading = source; return true; } @@ -230,6 +231,8 @@ void MpvInstance::processMpvEvents() { auto state = paused ? PlayerPluginInterface::PlayState::Paused : PlayerPluginInterface::PlayState::Playing; m_player->playStateChanged(state); + m_player->backendSourceChanged(m_currentlyLoading); + m_currentlyLoading = QUrl{}; } break; case MPV_EVENT_END_FILE: { m_loadedFile = false; diff --git a/backendplugins/backend_mpv/backendmpv.h b/backendplugins/backend_mpv/backendmpv.h index bd1f6b1..98627c5 100644 --- a/backendplugins/backend_mpv/backendmpv.h +++ b/backendplugins/backend_mpv/backendmpv.h @@ -45,6 +45,7 @@ private: PlayerPluginInterface *m_player = nullptr; mpv_handle *m_handle = nullptr; Volume m_volumeToSet = -1; + QUrl m_currentlyLoading; bool m_loadedFile = false; Q_INVOKABLE void processMpvEvents(); diff --git a/core/include/aniplayer/playerplugininterface.h b/core/include/aniplayer/playerplugininterface.h index c198111..5dc3445 100644 --- a/core/include/aniplayer/playerplugininterface.h +++ b/core/include/aniplayer/playerplugininterface.h @@ -2,6 +2,7 @@ #define PLAYERPLUGININTERFACE_H #include +#include class QOpenGLFramebufferObject; @@ -37,6 +38,7 @@ public: virtual void backendReadyToPlay() = 0; + virtual void backendSourceChanged(QUrl source) = 0; virtual void playStateChanged(PlayState) = 0; virtual void playbackDurationChanged(TimeStamp) = 0; virtual void playbackPositionChanged(TimeStamp) = 0; diff --git a/core/player.cpp b/core/player.cpp index 3aa6db6..906f760 100644 --- a/core/player.cpp +++ b/core/player.cpp @@ -149,6 +149,15 @@ void Player::backendReadyToPlay() { loadNextFile(); } +void Player::backendSourceChanged(QUrl source) +{ + if (m_currentSource == source) + return; + + m_currentSource = source; + emit currentSourceChanged(source); +} + void Player::rendererSinkSet(VideoUpdateInterface *renderer) { m_renderer = renderer; m_rendererReady = false; diff --git a/core/player.h b/core/player.h index 7289810..49a9e3c 100644 --- a/core/player.h +++ b/core/player.h @@ -137,6 +137,7 @@ public slots: protected: void backendReadyToPlay() override; + void backendSourceChanged(QUrl source) override; void rendererSinkSet(VideoUpdateInterface *) override; void rendererReady() override; void playStateChanged(PlayerPluginInterface::PlayState) override;