summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qtimer.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2024-06-28 10:18:20 +0200
committerMarc Mutz <marc.mutz@qt.io>2024-07-12 17:36:16 +0000
commitba80845ed16b784ac00dcc9e7715e4605e3344ff (patch)
tree388a4836db7df816b048a7e5b8f40ae7643a23a0 /src/corelib/kernel/qtimer.cpp
parent10b7b7fcf06d4ed5492e946ac93eb232c168e686 (diff)
QSingleShotTimer: de-inline [3/4]: move fromMSecs to qtimer.cpp
Move the implementation of fromSecs() from the header to the qtimer.cpp file and make it file-static. There are no callers of the function outside qtimer.cpp. Amends e0573e73645c0f57e46332a94160e28eb6c8ebac. As a drive-by, rename the function to snake_case to indicate that it's a file-static. Pick-to: 6.8 Change-Id: Ifa32df8a28816cd9cae44cdb9d481df94d33d741 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qtimer.cpp')
-rw-r--r--src/corelib/kernel/qtimer.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp
index 8d3ea7865d6..362285e3694 100644
--- a/src/corelib/kernel/qtimer.cpp
+++ b/src/corelib/kernel/qtimer.cpp
@@ -288,6 +288,23 @@ void QTimer::timerEvent(QTimerEvent *e)
}
}
+static QAbstractEventDispatcher::Duration from_msecs(std::chrono::milliseconds ms)
+{
+ using Duration = QAbstractEventDispatcher::Duration;
+
+ using namespace std::chrono;
+ using ratio = std::ratio_divide<std::milli, Duration::period>;
+ static_assert(ratio::den == 1);
+
+ Duration::rep r;
+ if (qMulOverflow<ratio::num>(ms.count(), &r)) {
+ qWarning("QTimer::singleShot(std::chrono::milliseconds, ...): "
+ "interval argument overflowed when converted to nanoseconds.");
+ return Duration::max();
+ }
+ return Duration{r};
+}
+
/*!
\internal
@@ -332,7 +349,7 @@ void QTimer::singleShotImpl(std::chrono::milliseconds msec, Qt::TimerType timerT
return;
}
- new QSingleShotTimer(QSingleShotTimer::fromMsecs(msec), timerType, receiver, slotObj);
+ new QSingleShotTimer(from_msecs(msec), timerType, receiver, slotObj);
}
/*!
@@ -396,7 +413,7 @@ void QTimer::singleShot(std::chrono::milliseconds msec, Qt::TimerType timerType,
Qt::QueuedConnection);
return;
}
- (void) new QSingleShotTimer(QSingleShotTimer::fromMsecs(msec), timerType, receiver, member);
+ (void) new QSingleShotTimer(from_msecs(msec), timerType, receiver, member);
}
}