diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-01-11 21:38:54 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-01-12 02:04:24 +0100 |
| commit | 08e5e4e27d9ac58050f9ebe77a5679157c0ee891 (patch) | |
| tree | 8c6d098b77d287b548847820b96b87cd157fb648 | |
| parent | 5afe6b7ca7214196d36917ece0d4b2f10c2c088c (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.cc | 11 |
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)) { |
