From 726d67bc30526c175e31681cca3760a6f9c45421 Mon Sep 17 00:00:00 2001 From: Eelke Klein Date: Sun, 8 Jan 2017 19:59:55 +0100 Subject: [PATCH] When more then 10 seconds has elapsed the timers switches to a self adjusting algorithm so it keeps ticking at exactly once a second. --- mainwindow.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index e4dd559..5d6692d 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -355,10 +355,18 @@ void MainWindow::updateTimer() std::chrono::duration diff = nu - m_startTime; m_timeElapsedLabel->setText(msfloatToHumanReadableString(diff.count())); + if (m_timer) { - int interval = int(diff.count()) / 25; - interval = std::max(interval, 18); - interval = std::min(interval, 1000); + int ms = diff.count(); + int interval = 18; + if (ms >= 10000) { + int rem = ms % 1000; + interval = 1000 - rem; + } + else if (ms >= 1000) { + interval = 100; + } + m_timer->start(interval); } }