From 22decbc3430f380137d92ecec926fdaa9b3a86d4 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Wed, 4 Aug 2021 10:19:43 +0200
Subject: [PATCH] UI: Clean way of getting the SID from MPV

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

diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc
index c3f47762..2930a7d9 100644
--- a/src/UI/DocumentViews/MpvContainer.cc
+++ b/src/UI/DocumentViews/MpvContainer.cc
@@ -176,33 +176,36 @@ MpvContainer::handleMpvEvent(mpv_event *event) noexcept
     }
 }
 
+int
+MpvContainer::getAssSid() const noexcept
+{
+    bool conversionOk  = false;
+    const char *result = mpv_get_property_string(mpv, "sid");
+    const int ret      = QString(result).toInt(&conversionOk);
+    return (result == nullptr || !conversionOk) ? -1 : ret;
+}
+
 void
 MpvContainer::handleMpvEventCommandReply(const AsyncCmdType type) noexcept
 {
-    int rc;
-
     switch (type) {
     case AsyncCmdType::None:
         break;
 
     case AsyncCmdType::LoadAssFile:
     case AsyncCmdType::ReloadAss:
-        mpv_get_property(mpv, "sid", MPV_FORMAT_INT64, &sid);
+        sid = getAssSid();
         qDebug() << "Load ASS file with id:" << sid;
         break;
     case AsyncCmdType::UnloadAss:
-        rc = mpv_get_property(mpv, "sid", MPV_FORMAT_INT64, &sid);
-        qDebug() << "Unloaded Ass, rc =" << rc << "and sid =" << sid;
-        if (rc != MPV_ERROR_SUCCESS) {
-            printMpvError(rc);
-            sid = -1;
-        } else {
+        sid = getAssSid();
+        qDebug().nospace() << "Unload Ass, rc = " << sid;
+        if (sid != -1)
             unloadAssFile();
-        }
         break;
 
     case AsyncCmdType::LoadFile:
-        mpv_get_property(mpv, "sid", MPV_FORMAT_INT64, &sid);
+        sid = getAssSid();
         qDebug() << "MPV - CMD: File loaded by mpv, sid =" << sid;
         isPlaybackPaused = false;
         mpvPause();
diff --git a/src/UI/DocumentViews/MpvContainer.hh b/src/UI/DocumentViews/MpvContainer.hh
index b6ab1d9f..1c1b4616 100644
--- a/src/UI/DocumentViews/MpvContainer.hh
+++ b/src/UI/DocumentViews/MpvContainer.hh
@@ -56,6 +56,7 @@ private:
     void asyncCommand(const AsyncCmdType, std::initializer_list<const char *>) noexcept;
     void unloadAssFile() noexcept;
     void handleMpvEventCommandReply(const AsyncCmdType) noexcept;
+    int getAssSid() const noexcept;
 
     // Must be static to be passed as a function ptr
     static void mpvEventWakeUpCB(void *) noexcept;
-- 
GitLab