Fix length of player output so it can be either the film's length or playlist's lengt...
[dcpomatic.git] / src / lib / job_manager.cc
index e2302a2153a01275686c20d724849328bb3c752a..d95f95a2481ba860ae4ee0c304d3190cf09f53f9 100644 (file)
@@ -46,7 +46,6 @@ JobManager* JobManager::_instance = 0;
 JobManager::JobManager ()
        : _terminate (false)
        , _paused (false)
-       , _scheduler (0)
 {
 
 }
@@ -54,9 +53,9 @@ JobManager::JobManager ()
 void
 JobManager::start ()
 {
-       _scheduler = new boost::thread (boost::bind (&JobManager::scheduler, this));
+       _scheduler = boost::thread (boost::bind(&JobManager::scheduler, this));
 #ifdef DCPOMATIC_LINUX
-       pthread_setname_np (_scheduler->native_handle(), "job-scheduler");
+       pthread_setname_np (_scheduler.native_handle(), "job-scheduler");
 #endif
 }
 
@@ -72,16 +71,13 @@ JobManager::~JobManager ()
                _empty_condition.notify_all ();
        }
 
-       if (_scheduler) {
-               /* Ideally this would be a DCPOMATIC_ASSERT(_scheduler->joinable()) but we
-                  can't throw exceptions from a destructor.
-               */
-               if (_scheduler->joinable ()) {
-                       _scheduler->join ();
+       if (_scheduler.joinable()) {
+               try {
+                       _scheduler.join();
+               } catch (...) {
+
                }
        }
-
-       delete _scheduler;
 }
 
 shared_ptr<Job>
@@ -233,7 +229,7 @@ JobManager::analyse_audio (
 
                BOOST_FOREACH (shared_ptr<Job> i, _jobs) {
                        shared_ptr<AnalyseAudioJob> a = dynamic_pointer_cast<AnalyseAudioJob> (i);
-                       if (a && a->playlist () == playlist) {
+                       if (a && a->path() == film->audio_analysis_path(playlist)) {
                                i->when_finished (connection, ready);
                                return;
                        }