Fixed rounding error in DownloadEngine::run().

This fixes the bug that executeCommand() with Command::STATUS_ALL is
not called in every interval correctly because of rounding error in
timer.
pull/1/head
Tatsuhiro Tsujikawa 2011-02-25 22:58:51 +09:00
parent f8f651e8db
commit 59f251ba14
1 changed files with 8 additions and 1 deletions

View File

@ -141,6 +141,13 @@ void executeCommand(std::deque<Command*>& commands,
}
} // namespace
namespace {
// Rounding error in millis
const int A2_DELTA = 10;
} // namespace
void DownloadEngine::run()
{
Timer cp;
@ -148,7 +155,7 @@ void DownloadEngine::run()
while(!commands_.empty() || !routineCommands_.empty()) {
global::wallclock.reset();
calculateStatistics();
if(cp.differenceInMillis(global::wallclock) >= refreshInterval_) {
if(cp.differenceInMillis(global::wallclock) >= refreshInterval_-A2_DELTA) {
refreshInterval_ = DEFAULT_REFRESH_INTERVAL;
cp = global::wallclock;
executeCommand(commands_, Command::STATUS_ALL);