24 qint64 v = dur.count();
25 qint64 saturated = std::numeric_limits<qint64>::max();
27 saturated = std::numeric_limits<qint64>::min();
30 using Ratio = std::ratio_divide<
typename Duration1::period, nanoseconds::period>;
31 static_assert(Ratio::den == 1,
"sub-multiples of nanosecond are not supported");
32 if (qMulOverflow<Ratio::num>(v, &v))
36 if (qAddOverflow(t1, v, &r))
38 if constexpr (
sizeof...(Durations)) {
40 return add_saturate(r, extra...);
273void QDeadlineTimer::setRemainingTime(qint64 msecs, Qt::TimerType timerType)
noexcept
276 *
this = QDeadlineTimer(Forever, timerType);
277 }
else if (msecs == 0) {
278 *
this = QDeadlineTimer(timerType);
279 t1 = std::numeric_limits<qint64>::min();
281 *
this = current(timerType);
282 milliseconds ms(msecs);
283 t1 = add_saturate(t1, ms);
309void QDeadlineTimer::setPreciseRemainingTime(qint64 secs, qint64 nsecs, Qt::TimerType timerType)
noexcept
312 *
this = QDeadlineTimer(Forever, timerType);
313 }
else if (secs == 0 && nsecs == 0) {
314 *
this = QDeadlineTimer(timerType);
315 t1 = std::numeric_limits<qint64>::min();
317 *
this = current(timerType);
318 t1 = add_saturate(t1, seconds{secs}, nanoseconds{nsecs});
526void QDeadlineTimer::setDeadline(qint64 msecs, Qt::TimerType timerType)
noexcept
528 if (msecs == TimeReference::Max) {
529 *
this = QDeadlineTimer(Forever, timerType);
534 t1 = add_saturate(0, milliseconds{msecs});