From 6207d271effad4e691a5155ccdad083e03b010bc Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 15 Jul 2025 02:57:37 +0200 Subject: Change Film::maybe_add_content to take a vector of content. --- src/lib/film.cc | 36 +++++++++++++++++++++++------------- src/lib/film.h | 2 +- 2 files changed, 24 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/lib/film.cc b/src/lib/film.cc index 4fb5f5f84..7401d1eac 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -1432,35 +1432,45 @@ Film::examine_and_add_content(shared_ptr content, bool disable_audio_an auto j = make_shared(shared_from_this(), vector>{content}, false); _job_connections.push_back( - j->Finished.connect(bind(&Film::maybe_add_content, this, weak_ptr(j), weak_ptr(content), disable_audio_analysis)) + j->Finished.connect(bind(&Film::maybe_add_content, this, weak_ptr(j), vector>{weak_ptr(content)}, disable_audio_analysis)) ); JobManager::instance()->add(j); } void -Film::maybe_add_content(weak_ptr j, weak_ptr c, bool disable_audio_analysis) +Film::maybe_add_content(weak_ptr j, vector> const& weak_content, bool disable_audio_analysis) { auto job = j.lock(); if (!job || !job->finished_ok()) { return; } - auto content = c.lock(); - if (!content) { + vector> content; + for (auto i: weak_content) { + if (auto c = i.lock()) { + content.push_back(c); + } + } + + if (content.empty()) { return; } - add_content(vector>{content}); + add_content(content); - if (Config::instance()->automatic_audio_analysis() && content->audio && !disable_audio_analysis) { - auto playlist = make_shared(); - playlist->add(shared_from_this(), content); - boost::signals2::connection c; - JobManager::instance()->analyse_audio( - shared_from_this(), playlist, false, c, bind(&Film::audio_analysis_finished, this) - ); - _audio_analysis_connections.push_back(c); + for (auto i: content) { + if (Config::instance()->automatic_audio_analysis() && !disable_audio_analysis) { + if (i->audio) { + auto playlist = make_shared(); + playlist->add(shared_from_this(), i); + boost::signals2::connection c; + JobManager::instance()->analyse_audio( + shared_from_this(), playlist, false, c, bind(&Film::audio_analysis_finished, this) + ); + _audio_analysis_connections.push_back(c); + } + } } } diff --git a/src/lib/film.h b/src/lib/film.h index a938d0dbd..e1a8e88a3 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -477,7 +477,7 @@ private: void playlist_order_changed(); void playlist_content_change(ChangeType type, std::weak_ptr, int, bool frequent); void playlist_length_change(); - void maybe_add_content(std::weak_ptr, std::weak_ptr, bool disable_audio_analysis); + void maybe_add_content(std::weak_ptr, std::vector> const& weak_content, bool disable_audio_analysis); void audio_analysis_finished(); void check_settings_consistency(); void maybe_set_container_and_resolution(); -- cgit v1.2.3