From 2cbb5c95ef276f14759e41af22c8363d7afb0194 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sat, 6 Mar 2021 15:01:54 -0600 Subject: Fix timer using 32-bit ints instead of 64-bit ints (#487) --- src/aoclocklabel.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/aoclocklabel.cpp b/src/aoclocklabel.cpp index 4c9c4819..67a82fe5 100644 --- a/src/aoclocklabel.cpp +++ b/src/aoclocklabel.cpp @@ -7,24 +7,25 @@ void AOClockLabel::start() timer.start(1000 / 60, this); } -void AOClockLabel::start(int msecs) +void AOClockLabel::start(qint64 msecs) { this->set(msecs); this->start(); } -void AOClockLabel::set(int msecs, bool update_text) +void AOClockLabel::set(qint64 msecs, bool update_text) { - target_time = QTime::currentTime().addMSecs(msecs); + target_time = QDateTime::currentDateTime().addMSecs(msecs); if (update_text) { - if (QTime::currentTime() >= target_time) + if (QDateTime::currentDateTime() >= target_time) { this->setText("00:00:00.000"); } else { - QTime timeleft = QTime(0,0).addMSecs(QTime::currentTime().msecsTo(target_time)); + qint64 ms_left = QDateTime::currentDateTime().msecsTo(target_time); + QTime timeleft = QTime(0, 0).addMSecs(ms_left % (1000 * 3600 * 24)); QString timestring = timeleft.toString("hh:mm:ss.zzz"); this->setText(timestring); } @@ -45,12 +46,13 @@ void AOClockLabel::stop() void AOClockLabel::timerEvent(QTimerEvent *event) { if (event->timerId() == timer.timerId()) { - if (QTime::currentTime() >= target_time) + if (QDateTime::currentDateTime() >= target_time) { this->stop(); return; } - QTime timeleft = QTime(0,0).addMSecs(QTime::currentTime().msecsTo(target_time)); + qint64 ms_left = QDateTime::currentDateTime().msecsTo(target_time); + QTime timeleft = QTime(0, 0).addMSecs(ms_left % (1000 * 3600 * 24)); QString timestring = timeleft.toString("hh:mm:ss.zzz"); this->setText(timestring); } else { -- cgit