From b0b9461f90d4e4a49223fbf2b367b6b9d250c1ee Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Fri, 19 Nov 2021 11:40:39 +0100
Subject: [PATCH] MPV: Try to fix the reload of the MPV context (not
 working...)

---
 src/UI/DocumentViews/MpvContainer.cc | 25 +++++++++++--------------
 src/UI/DocumentViews/MpvControls.cc  |  3 ---
 src/UI/DocumentViews/MpvControls.hh  |  1 -
 3 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc
index 74c75fa1..1f123238 100644
--- a/src/UI/DocumentViews/MpvContainer.cc
+++ b/src/UI/DocumentViews/MpvContainer.cc
@@ -91,16 +91,17 @@ MpvContainer::registerMpvDurationCallback(std::function<void(double)> callback)
 void
 MpvContainer::closeMpv() noexcept
 {
-    RETURN_IF_NULLPTR(mpv);
-    logDebug() << "Closing the MPV context";
-    asyncCommand(AsyncCmdType::None, { "quit", nullptr });
-    registerMpvTimeCallback(nullptr);
-    registerMpvDurationCallback(nullptr);
-    asyncCommand(AsyncCmdType::None, { "quit", nullptr });
-    mpv_wait_async_requests(mpv);
-    mpv_destroy(mpv);
-    mpv                     = nullptr; // Stop all other callbacks here
-    isMpvAlreadyInitialized = false;   // De-init
+    if (mpv) {
+        logDebug() << "Closing the MPV context";
+        asyncCommand(AsyncCmdType::None, { "quit", nullptr });
+        registerMpvTimeCallback(nullptr);
+        registerMpvDurationCallback(nullptr);
+        asyncCommand(AsyncCmdType::None, { "quit", nullptr });
+        mpv_wait_async_requests(mpv);
+        mpv_destroy(mpv);
+        mpv = nullptr; // Stop all other callbacks here
+    }
+    isMpvAlreadyInitialized = false; // De-init
 }
 
 MpvContainer::~MpvContainer() noexcept { closeMpv(); }
@@ -108,8 +109,6 @@ MpvContainer::~MpvContainer() noexcept { closeMpv(); }
 void
 MpvContainer::handleMpvEvent(const mpv_event *const event) noexcept
 {
-    RETURN_IF_NULLPTR(mpv);
-
     // Declare here variables that can be used in the switch-case statements
     double time;
     QString msgText;
@@ -210,8 +209,6 @@ MpvContainer::getAssSid() const noexcept
 void
 MpvContainer::handleMpvEventCommandReply(const AsyncCmdType type) noexcept
 {
-    RETURN_IF_NULLPTR(mpv);
-
     switch (type) {
     case AsyncCmdType::None: break;
 
diff --git a/src/UI/DocumentViews/MpvControls.cc b/src/UI/DocumentViews/MpvControls.cc
index c3b7e1a4..453c87c5 100644
--- a/src/UI/DocumentViews/MpvControls.cc
+++ b/src/UI/DocumentViews/MpvControls.cc
@@ -9,7 +9,6 @@ MpvControls::MpvControls(MpvContainer *passedContainer, QWidget *parent) noexcep
 {
     auto *progressBar          = new QSlider(this);
     auto *togglePlaybackButton = new QPushButton(playIcon, "", this); // Be default MPV is paused
-    auto *reCreateMpvButton    = new QPushButton(reCreateMpvIcon, "", this);
 
     progressBar->setTracking(false);
     progressBar->setOrientation(Qt::Horizontal);
@@ -55,7 +54,6 @@ MpvControls::MpvControls(MpvContainer *passedContainer, QWidget *parent) noexcep
     });
 
     connect(togglePlaybackButton, &QAbstractButton::clicked, mpv, &MpvContainer::mpvTogglePlayback);
-    connect(reCreateMpvButton, &QAbstractButton::clicked, mpv, &MpvContainer::reCreateMpvContext);
     connect(mpv, &MpvContainer::mpvPlaybackToggled, this,
             [this, togglePlaybackButton](bool isPlay) noexcept -> void {
                 togglePlaybackButton->setIcon(isPlay ? pauseIcon : playIcon);
@@ -63,7 +61,6 @@ MpvControls::MpvControls(MpvContainer *passedContainer, QWidget *parent) noexcep
 
     auto *centralLayout = new QHBoxLayout(this);
     centralLayout->addWidget(togglePlaybackButton);
-    centralLayout->addWidget(reCreateMpvButton);
     centralLayout->addWidget(progressBar, 1);
     setLayout(centralLayout);
 }
diff --git a/src/UI/DocumentViews/MpvControls.hh b/src/UI/DocumentViews/MpvControls.hh
index 84cd143a..5c792dc7 100644
--- a/src/UI/DocumentViews/MpvControls.hh
+++ b/src/UI/DocumentViews/MpvControls.hh
@@ -23,7 +23,6 @@ private:
 
     const QIcon playIcon{ VIVY_ICON_PLAY };
     const QIcon pauseIcon{ VIVY_ICON_PAUSE };
-    const QIcon reCreateMpvIcon{ VIVY_ICON_RUN };
 
 public:
     explicit MpvControls(MpvContainer *mpv, QWidget *parent) noexcept;
-- 
GitLab