diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-07-15 02:57:37 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-07-15 18:03:57 +0200 |
| commit | 6207d271effad4e691a5155ccdad083e03b010bc (patch) | |
| tree | 311fbd0bc1a9e50598efabab44ccada9ce6aea70 /src/lib | |
| parent | 0cfe03ee13d7659901211345e30ed78fe55e21ea (diff) | |
Change Film::maybe_add_content to take a vector of content.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/film.cc | 36 | ||||
| -rw-r--r-- | src/lib/film.h | 2 |
2 files changed, 24 insertions, 14 deletions
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> content, bool disable_audio_an auto j = make_shared<ExamineContentJob>(shared_from_this(), vector<shared_ptr<Content>>{content}, false); _job_connections.push_back( - j->Finished.connect(bind(&Film::maybe_add_content, this, weak_ptr<Job>(j), weak_ptr<Content>(content), disable_audio_analysis)) + j->Finished.connect(bind(&Film::maybe_add_content, this, weak_ptr<Job>(j), vector<weak_ptr<Content>>{weak_ptr<Content>(content)}, disable_audio_analysis)) ); JobManager::instance()->add(j); } void -Film::maybe_add_content(weak_ptr<Job> j, weak_ptr<Content> c, bool disable_audio_analysis) +Film::maybe_add_content(weak_ptr<Job> j, vector<weak_ptr<Content>> const& weak_content, bool disable_audio_analysis) { auto job = j.lock(); if (!job || !job->finished_ok()) { return; } - auto content = c.lock(); - if (!content) { + vector<shared_ptr<Content>> content; + for (auto i: weak_content) { + if (auto c = i.lock()) { + content.push_back(c); + } + } + + if (content.empty()) { return; } - add_content(vector<shared_ptr<Content>>{content}); + add_content(content); - if (Config::instance()->automatic_audio_analysis() && content->audio && !disable_audio_analysis) { - auto playlist = make_shared<Playlist>(); - 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>(); + 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<Content>, int, bool frequent); void playlist_length_change(); - void maybe_add_content(std::weak_ptr<Job>, std::weak_ptr<Content>, bool disable_audio_analysis); + void maybe_add_content(std::weak_ptr<Job>, std::vector<std::weak_ptr<Content>> const& weak_content, bool disable_audio_analysis); void audio_analysis_finished(); void check_settings_consistency(); void maybe_set_container_and_resolution(); |
