diff --git a/src/engine/gstengine.cpp b/src/engine/gstengine.cpp index d78e7c39c..664d6cd22 100644 --- a/src/engine/gstengine.cpp +++ b/src/engine/gstengine.cpp @@ -212,10 +212,13 @@ bool GstEngine::Load(const QUrl &media_url, const QUrl &stream_url, const Engine crossfade = false; } - if (!crossfade && current_pipeline_ && current_pipeline_->stream_url() == stream_url && change & EngineBase::TrackChangeType::Auto) { - // We're not crossfading, and the pipeline is already playing the URI we want, so just do nothing. - current_pipeline_->SetEBUR128LoudnessNormalizingGain_dB(ebur128_loudness_normalizing_gain_db_); - return true; + if (!crossfade && current_pipeline_ && change & EngineBase::TrackChangeType::Auto) { + QMutexLocker l(current_pipeline_->mutex_url()); + if (current_pipeline_->stream_url() == stream_url) { + // We're not crossfading, and the pipeline is already playing the URI we want, so just do nothing. + current_pipeline_->SetEBUR128LoudnessNormalizingGain_dB(ebur128_loudness_normalizing_gain_db_); + return true; + } } GstEnginePipelinePtr pipeline = CreatePipeline(media_url, stream_url, gst_url, force_stop_at_end ? end_nanosec : 0, ebur128_loudness_normalizing_gain_db_);