diff --git a/src/engine/gstengine.cpp b/src/engine/gstengine.cpp index e3cd20c37..1d4884e36 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]() {