summaryrefslogtreecommitdiff
path: root/src/lib/job.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-06-29 16:33:50 +0100
committerCarl Hetherington <cth@carlh.net>2016-06-29 16:33:50 +0100
commitf80d8d37323394113d6491e1cae271e32b2de5b4 (patch)
tree47092130d640cbaba3bc773b323f55c3fadb64d5 /src/lib/job.cc
parentbd4c3ae31019b2c6217f269a7623f6c2279067c1 (diff)
Increase frequency of progres updates on long jobs (#900).
Diffstat (limited to 'src/lib/job.cc')
-rw-r--r--src/lib/job.cc16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/job.cc b/src/lib/job.cc
index ba91debb7..0699c532c 100644
--- a/src/lib/job.cc
+++ b/src/lib/job.cc
@@ -270,9 +270,19 @@ Job::elapsed_time () const
void
Job::set_progress (float p, bool force)
{
- if (!force && fabs (p - progress().get_value_or(0)) < 0.01) {
- /* Calm excessive progress reporting */
- return;
+ if (!force) {
+ /* Check for excessively frequent progress reporting */
+ boost::mutex::scoped_lock lm (_progress_mutex);
+ 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);
+ if (elapsed < 0.5) {
+ return;
+ }
+ }
+ _last_progress_update = now;
}
set_progress_common (p);