Fix build.
[dcpomatic.git] / src / lib / job.cc
index b5be02b4c2ce0a9da71196383b4b16fecd4619b0..3472f27768b5d8082ff09bbfa01230fb2f664b6b 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
@@ -28,6 +28,7 @@
 #include "exceptions.h"
 #include "film.h"
 #include "log.h"
+#include "analytics.h"
 #include "compose.hpp"
 #include <dcp/exceptions.h>
 #include <sub/exceptions.h>
@@ -87,6 +88,9 @@ Job::start ()
        _start_time = time (0);
        _sub_start_time = time (0);
        _thread = new boost::thread (boost::bind (&Job::run_wrapper, this));
+#ifdef DCPOMATIC_LINUX
+       pthread_setname_np (_thread->native_handle(), "job-wrapper");
+#endif
 }
 
 /** A wrapper for the ::run() method to catch exceptions */
@@ -171,6 +175,18 @@ Job::run_wrapper ()
                set_progress (1);
                set_state (FINISHED_ERROR);
 
+       } catch (dcp::DCPReadError& e) {
+
+               set_error (e.what(), "");//message(), e.detail().get_value_or(""));
+               set_progress (1);
+               set_state (FINISHED_ERROR);
+
+       } catch (KDMError& e) {
+
+               set_error (e.summary(), e.detail());
+               set_progress (1);
+               set_state (FINISHED_ERROR);
+
        } catch (std::exception& e) {
 
                set_error (
@@ -271,11 +287,14 @@ Job::set_state (State s)
                        finished = true;
                        _sub_name.clear ();
                }
+
        }
 
        if (finished) {
                emit (boost::bind (boost::ref (Finished)));
        }
+
+       Analytics::instance()->job_state_changed (shared_from_this());
 }
 
 /** @return DCPTime (in seconds) that this sub-job has been running */
@@ -425,8 +444,8 @@ Job::status () const
                if (t > 10 && r > 0) {
                        boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
                        boost::posix_time::ptime finish = now + boost::posix_time::seconds(r);
-                       char finish_string[6];
-                       snprintf (finish_string, sizeof(finish_string), "%02d:%02d", finish.time_of_day().hours(), finish.time_of_day().minutes());
+                       char finish_string[16];
+                       snprintf (finish_string, sizeof(finish_string), "%02d:%02d", int(finish.time_of_day().hours()), int(finish.time_of_day().minutes()));
                        string day;
                        if (now.date() != finish.date()) {
                                /// TRANSLATORS: the %1 in this string will be filled in with a day of the week