summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-07-15 02:57:37 +0200
committerCarl Hetherington <cth@carlh.net>2025-07-15 18:03:57 +0200
commit6207d271effad4e691a5155ccdad083e03b010bc (patch)
tree311fbd0bc1a9e50598efabab44ccada9ce6aea70 /src/lib
parent0cfe03ee13d7659901211345e30ed78fe55e21ea (diff)
Change Film::maybe_add_content to take a vector of content.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/film.cc36
-rw-r--r--src/lib/film.h2
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();