JobManager::JobManager ()
: _terminate (false)
, _paused (false)
- , _scheduler (0)
{
}
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
}
_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>
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;
}