diff --git a/src/progressBar.cpp b/src/progressBar.cpp index 8b07831..43cd072 100644 --- a/src/progressBar.cpp +++ b/src/progressBar.cpp @@ -23,10 +23,16 @@ ProgressBar::ProgressBar(std::string mess, int maxValue, int progressLen): _mess(mess), _maxValue(maxValue), _progressLen(progressLen) { + last_time = clock(); } - -void ProgressBar::display(int value) +void ProgressBar::display(int value, char force) { + clock_t this_time = clock(); + if (!force && ((((float)(this_time - last_time))/CLOCKS_PER_SEC) < 0.2)) + { + return; + } + last_time = this_time; float percent = ((float)value * 100.0f)/(float)_maxValue; float nbEq = (percent * (float) _progressLen)/100.0f; @@ -41,13 +47,13 @@ void ProgressBar::display(int value) } void ProgressBar::done() { - display(_maxValue); + display(_maxValue, true); //fprintf(stderr, "\nDone\n"); printSuccess("\nDone"); } void ProgressBar::fail() { - display(_maxValue); + display(_maxValue, true); //fprintf(stderr, "\nDone\n"); printError("\nFail"); } diff --git a/src/progressBar.hpp b/src/progressBar.hpp index 7a7a7d7..9e54758 100644 --- a/src/progressBar.hpp +++ b/src/progressBar.hpp @@ -17,19 +17,20 @@ #ifndef PROGRESSBARE_HPP #define PROGRESSBARE_HPP - +#include #include class ProgressBar { public: ProgressBar(std::string mess, int maxValue, int progressLen); - void display(int value); + void display(int value, char force = 0); void done(); void fail(); private: std::string _mess; int _maxValue; int _progressLen; + clock_t last_time; //records the time of last progress bar update }; #endif