X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fjob_manager.cc;h=c40178f418a8960914193245f8fbebe557eead97;hb=dd7c63112eda87f2e491261873075acff114396b;hp=d95f95a2481ba860ae4ee0c304d3190cf09f53f9;hpb=ea6b2dae46caa1da829fbf499e83cd6ae3b3773a;p=dcpomatic.git diff --git a/src/lib/job_manager.cc b/src/lib/job_manager.cc index d95f95a24..c40178f41 100644 --- a/src/lib/job_manager.cc +++ b/src/lib/job_manager.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2018 Carl Hetherington + Copyright (C) 2012-2020 Carl Hetherington This file is part of DCP-o-matic. @@ -26,6 +26,7 @@ #include "job.h" #include "cross.h" #include "analyse_audio_job.h" +#include "analyse_subtitles_job.h" #include "film.h" #include #include @@ -250,6 +251,42 @@ JobManager::analyse_audio ( emit (boost::bind (boost::ref (JobAdded), weak_ptr (job))); } + +void +JobManager::analyse_subtitles ( + shared_ptr film, + shared_ptr content, + boost::signals2::connection& connection, + function ready + ) +{ + { + boost::mutex::scoped_lock lm (_mutex); + + BOOST_FOREACH (shared_ptr i, _jobs) { + shared_ptr a = dynamic_pointer_cast (i); + if (a && a->path() == film->subtitle_analysis_path(content)) { + i->when_finished (connection, ready); + return; + } + } + } + + shared_ptr job; + + { + boost::mutex::scoped_lock lm (_mutex); + + job.reset (new AnalyseSubtitlesJob(film, content)); + connection = job->Finished.connect (ready); + _jobs.push_back (job); + _empty_condition.notify_all (); + } + + emit (boost::bind (boost::ref (JobAdded), weak_ptr (job))); +} + + void JobManager::increase_priority (shared_ptr job) {