From aab9f08bc15ec7c579fe8ae04b6482ee49ba38b4 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Fri, 19 Nov 2021 21:10:29 +0100 Subject: [PATCH] FIX: Try to minimize the segv thing when quiting and leaking MPV --- src/Lib/Audio.cc | 2 +- src/UI/DocumentViews/MpvContainer.cc | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Lib/Audio.cc b/src/Lib/Audio.cc index 290af835..6f02dbee 100644 --- a/src/Lib/Audio.cc +++ b/src/Lib/Audio.cc @@ -128,7 +128,7 @@ AudioStream::decodeData() const size_t frame_count = static_cast<size_t>(frame_count_int); dataPtr = reinterpret_cast<double *>( realloc(dataPtr, (dataSize + static_cast<size_t>(dataFrame->nb_samples)) * - sizeof(double))); + sizeof(double))); memcpy(dataPtr + dataSize, buffer, frame_count * sizeof(double)); dataSize += frame_count; } diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc index b6350953..ec7c8d47 100644 --- a/src/UI/DocumentViews/MpvContainer.cc +++ b/src/UI/DocumentViews/MpvContainer.cc @@ -107,6 +107,14 @@ MpvContainer::~MpvContainer() noexcept logWarning() << "The main window was already destroyed, " "don't destroy MPV and let it leak, " "the OS will collect the garbage."; + if (mpv) { + asyncCommand(AsyncCmdType::None, { "quit", nullptr }); + registerMpvTimeCallback(nullptr); + registerMpvDurationCallback(nullptr); + asyncCommand(AsyncCmdType::None, { "quit", nullptr }); + mpv = nullptr; // Stop all other callbacks here + isMpvAlreadyInitialized = false; // De-init + } } } -- GitLab