X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fjob_manager.h;h=e0b72994df9dd2ab87495df0c6be3eb710afca2e;hb=fdc416faa317106d05be8fe5226ded84d8347d99;hp=9cba0fd094a46bd44796532543e6e7ac9ebce4ac;hpb=9d4906db6e143248cf1e814d539aa2c7a50721dc;p=dcpomatic.git diff --git a/src/lib/job_manager.h b/src/lib/job_manager.h index 9cba0fd09..e0b72994d 100644 --- a/src/lib/job_manager.h +++ b/src/lib/job_manager.h @@ -26,6 +26,7 @@ #include #include #include +#include #include class Job; @@ -41,11 +42,18 @@ class JobManager : public Signaller, public boost::noncopyable { public: boost::shared_ptr add (boost::shared_ptr); + boost::shared_ptr add_after (boost::shared_ptr after, boost::shared_ptr j); std::list > get () const; bool work_to_do () const; bool errors () const; void increase_priority (boost::shared_ptr); void decrease_priority (boost::shared_ptr); + void pause (); + void resume (); + bool paused () const { + boost::mutex::scoped_lock lm (_mutex); + return _paused; + } void analyse_audio ( boost::shared_ptr film, @@ -71,11 +79,16 @@ private: void scheduler (); void start (); void priority_changed (); + void job_finished (); mutable boost::mutex _mutex; + boost::condition _empty_condition; /** List of jobs in the order that they will be executed */ std::list > _jobs; + std::list _connections; bool _terminate; + bool _paused; + boost::shared_ptr _paused_job; boost::optional _last_active_job; boost::thread* _scheduler;