using std::cout;
using std::shared_ptr;
using boost::optional;
-using boost::function;
+using std::function;
using namespace dcpomatic;
/** @param film Associated film, or 0 */
}
}
+
+optional<float>
+Job::seconds_since_last_progress_update () const
+{
+ boost::mutex::scoped_lock lm (_progress_mutex);
+ if (!_last_progress_update) {
+ return {};
+ }
+
+ struct timeval now;
+ gettimeofday (&now, 0);
+
+ return seconds(now) - seconds(*_last_progress_update);
+}
+
+
/** Set the progress of the current part of the job.
* @param p Progress (from 0 to 1)
* @param force Do not ignore this update, even if it hasn't been long since the last one.
struct timeval now;
gettimeofday (&now, 0);
if (_last_progress_update && _last_progress_update->tv_sec > 0) {
- double const elapsed = (now.tv_sec + now.tv_usec / 1000000.0)
- - (_last_progress_update->tv_sec + _last_progress_update->tv_usec / 1000000.0);
+ double const elapsed = seconds(now) - seconds(*_last_progress_update);
if (elapsed < 0.5) {
return;
}