Tidy up now we have a x-thread signaller.
[dcpomatic.git] / src / lib / job.h
index b391304792e0a3e9ab0a926ae440b3dfcf806e8d..1ada68e1f41fa751e1ce8ce2f475a77f37b0d03d 100644 (file)
@@ -29,8 +29,7 @@
 #include <boost/enable_shared_from_this.hpp>
 #include <sigc++/sigc++.h>
 
-class Log;
-class FilmState;
+class Film;
 class Options;
 
 /** @class Job
@@ -39,7 +38,7 @@ class Options;
 class Job : public boost::enable_shared_from_this<Job>
 {
 public:
-       Job (boost::shared_ptr<const FilmState> s, boost::shared_ptr<const Options> o, Log* l);
+       Job (boost::shared_ptr<Film> s, boost::shared_ptr<Job> req);
 
        /** @return user-readable name of this job */
        virtual std::string name () const = 0;
@@ -48,6 +47,7 @@ public:
        
        void start ();
 
+       bool is_new () const;
        bool running () const;
        bool finished () const;
        bool finished_ok () const;
@@ -64,9 +64,10 @@ public:
        void descend (float);
        float overall_progress () const;
 
-       void emit_finished ();
+       boost::shared_ptr<Job> required () const {
+               return _required;
+       }
 
-       /** Emitted from the GUI thread */
        sigc::signal0<void> Finished;
 
 protected:
@@ -84,17 +85,15 @@ protected:
        void set_state (State);
        void set_error (std::string e);
 
-       /** FilmState for this job */
-       boost::shared_ptr<const FilmState> _fs;
-       /** options in use for this job */
-       boost::shared_ptr<const Options> _opt;
-       /** a log that this job can write to */
-       Log* _log;
+       /** Film for this job */
+       boost::shared_ptr<Film> _film;
 
 private:
 
        void run_wrapper ();
 
+       boost::shared_ptr<Job> _required;
+
        /** mutex for _state and _error */
        mutable boost::mutex _state_mutex;
        /** current state of the job */
@@ -119,6 +118,8 @@ private:
 
        /** true if this job's progress will always be unknown */
        bool _progress_unknown;
+
+       int _ran_for;
 };
 
 #endif