X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fjob_manager.cc;h=d95f95a2481ba860ae4ee0c304d3190cf09f53f9;hb=ea6b2dae46caa1da829fbf499e83cd6ae3b3773a;hp=26e2d28970a71c0f5a9d90b7582ed2738fd2fca0;hpb=a1546fb6c4e59621d99271b8ca996e96a574f7b3;p=dcpomatic.git diff --git a/src/lib/job_manager.cc b/src/lib/job_manager.cc index 26e2d2897..d95f95a24 100644 --- a/src/lib/job_manager.cc +++ b/src/lib/job_manager.cc @@ -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