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