using std::string;
using std::list;
+using std::cout;
using std::stringstream;
using boost::shared_ptr;
, _state (NEW)
, _start_time (0)
, _progress_unknown (false)
+ , _last_set (0)
, _ran_for (0)
{
descend (1);
set_state (FINISHED_ERROR);
set_error (
e.what (),
- _("It is not known what caused this error. The best idea is to report the problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)")
+ _("It is not known what caused this error. The best idea is to report the problem to the DCP-o-matic mailing list (carl@dcpomatic.com)")
);
} catch (...) {
set_state (FINISHED_ERROR);
set_error (
_("Unknown error"),
- _("It is not known what caused this error. The best idea is to report the problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)")
+ _("It is not known what caused this error. The best idea is to report the problem to the DCP-o-matic mailing list (carl@dcpomatic.com)")
);
}
void
Job::set_state (State s)
{
- boost::mutex::scoped_lock lm (_state_mutex);
- _state = s;
+ bool finished = false;
+
+ {
+ boost::mutex::scoped_lock lm (_state_mutex);
+ _state = s;
- if (_state == FINISHED_OK || _state == FINISHED_ERROR || _state == FINISHED_CANCELLED) {
- _ran_for = elapsed_time ();
- if (ui_signaller) {
- ui_signaller->emit (boost::bind (boost::ref (Finished)));
+ if (_state == FINISHED_OK || _state == FINISHED_ERROR || _state == FINISHED_CANCELLED) {
+ _ran_for = elapsed_time ();
+ finished = true;
}
}
+
+ if (finished && ui_signaller) {
+ ui_signaller->emit (boost::bind (boost::ref (Finished)));
+ }
}
/** @return Time (in seconds) that this job has been running */
void
Job::set_progress (float p)
{
+ if (fabs (p - _last_set) < 0.01) {
+ /* Calm excessive progress reporting */
+ return;
+ }
+
+ _last_set = p;
+
boost::mutex::scoped_lock lm (_progress_mutex);
_progress_unknown = false;
_stack.back().normalised = p;