From 6562cc710c796da718fa25a5366f4ca50b647fc2 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sun, 11 Aug 2024 15:53:41 +0200 Subject: [PATCH] GstEngine: Disconnect old pipelines Fixes #1518 --- src/engine/gstengine.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/engine/gstengine.cpp b/src/engine/gstengine.cpp index e3cd20c3..1d4884e3 100644 --- a/src/engine/gstengine.cpp +++ b/src/engine/gstengine.cpp @@ -591,7 +591,7 @@ void GstEngine::EndOfStreamReached(const int pipeline_id, const bool has_next_tr } if (!has_next_track) { - current_pipeline_.reset(); + current_pipeline_ = GstEnginePipelinePtr(); BufferingFinished(); } @@ -803,6 +803,8 @@ void GstEngine::StartFadeout() { return; } + QObject::disconnect(&*pipeline, nullptr, this, nullptr); + fadeout_pipelines_.insert(pipeline->id(), pipeline); pipeline->RemoveAllBufferConsumers(); @@ -909,6 +911,8 @@ void GstEngine::FinishPipeline(GstEnginePipelinePtr pipeline) { const int pipeline_id = pipeline->id(); + QObject::disconnect(&*pipeline, nullptr, this, nullptr); + if (!pipeline->Finish() && !old_pipelines_.contains(pipeline->id())) { old_pipelines_.insert(pipeline_id, pipeline); QObject::connect(&*pipeline, &GstEnginePipeline::Finished, this, [this, pipeline_id]() {