diff --git a/openbr/core/core.cpp b/openbr/core/core.cpp index 5f449de..91e7433 100644 --- a/openbr/core/core.cpp +++ b/openbr/core/core.cpp @@ -148,9 +148,11 @@ struct AlgorithmCore if (data.empty()) return files; + // Store totalSteps for ProgressCounter + Globals->totalSteps = data.length(); + // Trust me, this makes complete sense. // We're just going to make a pipe with a placeholder first transform - Globals->totalSteps = data.length(); QString pipeDesc = "Identity+GalleryOutput("+gallery.flat()+")+ProgressCounter("+QString::number(data.length())+")+Discard"; QScopedPointer basePipe(Transform::make(pipeDesc,NULL)); diff --git a/openbr/gui/progress.cpp b/openbr/gui/progress.cpp index fbe2bf6..c162b5d 100644 --- a/openbr/gui/progress.cpp +++ b/openbr/gui/progress.cpp @@ -26,7 +26,7 @@ br::Progress::Progress(QWidget *parent) void br::Progress::checkProgress() { const int progress = 100 * br_progress(); - const bool visible = progress >= 0; + const bool visible = progress >= 0 && progress < 100; if (visible) { showMessage(br_most_recent_message()); diff --git a/openbr/plugins/misc.cpp b/openbr/plugins/misc.cpp index 3a84d8d..a9cb8d4 100644 --- a/openbr/plugins/misc.cpp +++ b/openbr/plugins/misc.cpp @@ -514,28 +514,20 @@ class ProgressCounterTransform : public TimeVaryingTransform void projectUpdate(const TemplateList &src, TemplateList &dst) { dst = src; - qint64 elapsed = timer.elapsed(); - calls++; - set_calls++; - // updated every 10 seconds - if (elapsed > 5 * 1000) { - float f_elapsed = elapsed / 1000.0f; - // remaining calls (according to our input variable) - int remaining = totalTemplates - calls; - // calls / second - float speed = set_calls / f_elapsed; - float p = 100 * float(calls) / totalTemplates; + qint64 elapsed = timer.elapsed(); - // seconds remaining - int s = float(remaining) / speed; + // updated every second + if (elapsed > 1000) { + float p = br_progress(); + int s = br_time_remaining(); - fprintf(stderr, "%05.2f%% ELAPSED=%s REMAINING=%s COUNT=%g \r", p, QtUtils::toTime(Globals->startTime.elapsed()/1000.0f).toStdString().c_str(), QtUtils::toTime(s).toStdString().c_str(), float(calls)); + fprintf(stderr, "%05.2f%% ELAPSED=%s REMAINING=%s COUNT=%g \r", p, QtUtils::toTime(Globals->startTime.elapsed()/1000.0f).toStdString().c_str(), QtUtils::toTime(s).toStdString().c_str(), Globals->currentStep); timer.start(); - set_calls = 0; } + Globals->currentStep++; return; } @@ -548,24 +540,18 @@ class ProgressCounterTransform : public TimeVaryingTransform void finalize(TemplateList & data) { (void) data; - float p = 100 * float(calls) / totalTemplates; - qDebug("%05.2f%% ELAPSED=%s REMAINING=%s COUNT=%g \r", p, QtUtils::toTime(Globals->startTime.elapsed()/1000.0f).toStdString().c_str(), QtUtils::toTime(0).toStdString().c_str(), float(calls)); + float p = br_progress(); + qDebug("%05.2f%% ELAPSED=%s REMAINING=%s COUNT=%g \r", p, QtUtils::toTime(Globals->startTime.elapsed()/1000.0f).toStdString().c_str(), QtUtils::toTime(0).toStdString().c_str(), Globals->currentStep); } void init() { - calls = 0; - set_calls = 0; timer.start(); } public: ProgressCounterTransform() : TimeVaryingTransform(false,false) {} - bool initialized; QElapsedTimer timer; - qint64 calls; - qint64 set_calls; - }; BR_REGISTER(Transform, ProgressCounterTransform)