]> Some of my projects - aniplayer.git/commitdiff
Make Player aware of currentSource changes
authorAPTX <marek321@gmail.com>
Wed, 1 Mar 2017 19:26:03 +0000 (20:26 +0100)
committerAPTX <marek321@gmail.com>
Wed, 1 Mar 2017 19:37:17 +0000 (20:37 +0100)
backendplugins/backend_mpv/backendmpv.cpp
backendplugins/backend_mpv/backendmpv.h
core/include/aniplayer/playerplugininterface.h
core/player.cpp
core/player.h

index d17a384c1f5835ac712baa620582c8c528bc9233..58bf9cb66931370c39f9967c0e0cdac1382e30c8 100644 (file)
@@ -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;
index bd1f6b19bac7926a9e18f9dc00380c216951e934..98627c59b1545d9b2cc4fc5022be07adf78ec5c8 100644 (file)
@@ -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();
index c198111449532a4126a99609ff1305de86d65410..5dc3445878199a02d9cdbe40f65247feae7c8c00 100644 (file)
@@ -2,6 +2,7 @@
 #define PLAYERPLUGININTERFACE_H
 
 #include <QtGlobal>
+#include <QUrl>
 
 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;
index 3aa6db697370f5ad01cd729fcf9eb8cadb916589..906f760c6d5153930305ed92ff2610c2b46dfa18 100644 (file)
@@ -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;
index 72898101c955c19448e839102728e649a56caabc..49a9e3ce71bd445e965543ed56c267d45447f0fb 100644 (file)
@@ -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;