Tidy up creation of analysis a bit.
[dcpomatic.git] / src / lib / job.h
index b09964cf9223c0654d0466b53cff983edc227b93..c98dbaea15dfb13133611f61727439d332158470 100644 (file)
@@ -30,7 +30,6 @@
 #include <boost/signals2.hpp>
 
 class Film;
-class Options;
 
 /** @class Job
  *  @brief A parent class to represent long-running tasks which are run in their own thread.
@@ -38,7 +37,8 @@ class Options;
 class Job : public boost::enable_shared_from_this<Job>
 {
 public:
-       Job (boost::shared_ptr<Film> s, boost::shared_ptr<Job> req);
+       Job (boost::shared_ptr<Film> s);
+       virtual ~Job() {}
 
        /** @return user-readable name of this job */
        virtual std::string name () const = 0;
@@ -53,7 +53,8 @@ public:
        bool finished_ok () const;
        bool finished_in_error () const;
 
-       std::string error () const;
+       std::string error_summary () const;
+       std::string error_details () const;
 
        int elapsed_time () const;
        virtual std::string status () const;
@@ -64,10 +65,7 @@ public:
        void descend (float);
        float overall_progress () const;
 
-       boost::shared_ptr<Job> required () const {
-               return _required;
-       }
-
+       /** Emitted by the JobManagerView from the UI thread */
        boost::signals2::signal<void()> Finished;
 
 protected:
@@ -83,7 +81,7 @@ protected:
        };
        
        void set_state (State);
-       void set_error (std::string e);
+       void set_error (std::string s, std::string d);
 
        /** Film for this job */
        boost::shared_ptr<Film> _film;
@@ -92,14 +90,13 @@ private:
 
        void run_wrapper ();
 
-       boost::shared_ptr<Job> _required;
-
        /** mutex for _state and _error */
        mutable boost::mutex _state_mutex;
        /** current state of the job */
        State _state;
-       /** message for an error that has occurred (when state == FINISHED_ERROR) */
-       std::string _error;
+       /** summary of an error that has occurred (when state == FINISHED_ERROR) */
+       std::string _error_summary;
+       std::string _error_details;
 
        /** time that this job was started */
        time_t _start_time;