summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-01-11 21:38:54 +0100
committerCarl Hetherington <cth@carlh.net>2025-01-12 02:04:24 +0100
commit08e5e4e27d9ac58050f9ebe77a5679157c0ee891 (patch)
tree8c6d098b77d287b548847820b96b87cd157fb648
parent5afe6b7ca7214196d36917ece0d4b2f10c2c088c (diff)
Fix use of so-far un-set _film, causing crash when you try to add an OV.
-rw-r--r--src/tools/dcpomatic_player.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc
index 3e4c8eb0c..8ccb60937 100644
--- a/src/tools/dcpomatic_player.cc
+++ b/src/tools/dcpomatic_player.cc
@@ -406,7 +406,7 @@ public:
auto dcp = make_shared<DCPContent>(dir);
auto job = make_shared<ExamineContentJob>(film, dcp);
- auto add_dcp_to_film = [this](weak_ptr<Job> weak_job, weak_ptr<Content> weak_content)
+ auto add_dcp_to_film = [this](weak_ptr<Film> weak_film, weak_ptr<Job> weak_job, weak_ptr<Content> weak_content)
{
auto job = weak_job.lock();
if (!job || !job->finished_ok()) {
@@ -418,11 +418,16 @@ public:
return;
}
- _film->add_content(content);
+ auto film = weak_film.lock();
+ if (!film) {
+ return;
+ }
+
+ film->add_content(content);
_stress.set_suspended(false);
};
- _examine_job_connection = job->Finished.connect(bind<void>(add_dcp_to_film, weak_ptr<Job>(job), weak_ptr<Content>(dcp)));
+ _examine_job_connection = job->Finished.connect(bind<void>(add_dcp_to_film, weak_ptr<Film>(film), weak_ptr<Job>(job), weak_ptr<Content>(dcp)));
JobManager::instance()->add (job);
bool const ok = display_progress(variant::wx::dcpomatic_player(), _("Loading content"));
if (!ok || !report_errors_from_last_job(this)) {