X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcheck_content_change_job.cc;h=1df3bc9cda1f945a15e87c41091214a3a1dc14fa;hb=f5980767b7d1d9b39186dd13f12b9d8297a87aef;hp=783a2ac010521e989c636af307964955b256029c;hpb=f0f4b2371ff5cd6fc39239a3c201bae0c033d21f;p=dcpomatic.git diff --git a/src/lib/check_content_change_job.cc b/src/lib/check_content_change_job.cc index 783a2ac01..1df3bc9cd 100644 --- a/src/lib/check_content_change_job.cc +++ b/src/lib/check_content_change_job.cc @@ -33,17 +33,24 @@ using std::list; using std::cout; using boost::shared_ptr; -CheckContentChangeJob::CheckContentChangeJob (shared_ptr film, shared_ptr following) +/** @param gui true if we are running this job from the GUI, false if it's the CLI */ +CheckContentChangeJob::CheckContentChangeJob (shared_ptr film, shared_ptr following, bool gui) : Job (film) , _following (following) + , _gui (gui) { } +CheckContentChangeJob::~CheckContentChangeJob () +{ + stop_thread (); +} + string CheckContentChangeJob::name () const { - return _("Check content for changes"); + return _("Checking content for changes"); } string @@ -79,18 +86,33 @@ CheckContentChangeJob::run () JobManager::instance()->add(shared_ptr(new ExamineContentJob(_film, i))); } - set_progress (1); - set_state (FINISHED_OK); - if (!changed.empty()) { - string m = _("Some files have been changed since they were added to the project.\n\nThese files will now be re-examined, so you may need to check their settings."); - if (_following) { - /* I'm assuming that _following is a make DCP job */ - m += " "; - m += _("Choose 'Make DCP' again when you have done this."); + if (_gui) { + string m = _("Some files have been changed since they were added to the project.\n\nThese files will now be re-examined, so you may need to check their settings."); + if (_following) { + /* I'm assuming that _following is a make DCP job */ + m += " "; + m += _("Choose 'Make DCP' again when you have done this."); + } + set_message (m); + } else { + set_progress (1); + set_state (FINISHED_ERROR); + set_error ( + _("Some files have been changed since they were added to the project. Open the project in DCP-o-matic, check the settings, then save it before trying again."), + "" + ); + return; } - set_message (m); } else if (_following) { JobManager::instance()->add (_following); } + + /* Only set this job as finished once we have added the following job, otherwise I think + it's possible that the tests will sporadically fail if they check for all jobs being + complete in the gap between this one finishing and _following being added. + */ + + set_progress (1); + set_state (FINISHED_OK); }