Don't start thread in constructor. (JobManager)
[dcpomatic.git] / src / lib / job_manager.cc
index f31a00a18b33f0bce674f0406b06197f8fbea691..e3f91f4fcf22dde2721e9c100d7e1a0e8c379dbf 100644 (file)
@@ -38,11 +38,17 @@ JobManager* JobManager::_instance = 0;
 JobManager::JobManager ()
        : _terminate (false)
        , _last_active_jobs (false)
-       , _scheduler (new boost::thread (boost::bind (&JobManager::scheduler, this)))
+       , _scheduler (0)
 {
 
 }
 
+void
+JobManager::start ()
+{
+       _scheduler = new boost::thread (boost::bind (&JobManager::scheduler, this));
+}
+
 JobManager::~JobManager ()
 {
        {
@@ -50,9 +56,11 @@ JobManager::~JobManager ()
                _terminate = true;
        }
 
-       if (_scheduler->joinable ()) {
+       if (_scheduler) {
                _scheduler->join ();
        }
+
+       delete _scheduler;
 }
 
 shared_ptr<Job>
@@ -147,6 +155,7 @@ JobManager::instance ()
 {
        if (_instance == 0) {
                _instance = new JobManager ();
+               _instance->start ();
        }
 
        return _instance;