OSDN Git Service

kget: fix possible miscalculation of elapsed time due to clock jumps
authorIvailo Monev <xakepa10@gmail.com>
Fri, 7 Jul 2023 19:44:40 +0000 (22:44 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Fri, 7 Jul 2023 19:44:40 +0000 (22:44 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
kget/core/transfer.cpp

index 7ef9fd9..0ed3c42 100644 (file)
 #include <QtXml/qdom.h>
 #include <QtCore/qdatetime.h>
 
-// FIXME: this is jumpy
+static QTime currentUtcTime()
+{
+    return QDateTime::currentDateTimeUtc().time();
+}
+
 static int elapsedSecs(const QTime &time)
 {
-    const int msecs = time.msecsTo(QTime::currentTime());
+    const int msecs = time.msecsTo(currentUtcTime());
     if (msecs <= 0) {
         return 0;
     }
@@ -298,7 +302,7 @@ void Transfer::setStatus(Job::Status jobStatus, const QString &text, const QPixm
 
     if (jobStatus == Job::Running && status() != Job::Running)
     {
-        m_runningTime = QTime::currentTime();
+        m_runningTime = currentUtcTime();
         m_runningTime.addSecs(m_runningSeconds);
     }
     if (jobStatus != Job::Running && status() == Job::Running)