25 qint64 v = dur.count();
26 qint64 saturated = std::numeric_limits<qint64>::max();
28 saturated = std::numeric_limits<qint64>::min();
31 using Ratio = std::ratio_divide<
typename Duration1::period, nanoseconds::period>;
32 static_assert(Ratio::den == 1,
"sub-multiples of nanosecond are not supported");
33 if (qMulOverflow<Ratio::num>(v, &v))
37 if (qAddOverflow(t1, v, &r))
39 if constexpr (
sizeof...(Durations)) {
41 return add_saturate(r, extra...);
274void QDeadlineTimer::setRemainingTime(qint64 msecs, Qt::TimerType timerType)
noexcept
277 *
this = QDeadlineTimer(Forever, timerType);
278 }
else if (msecs == 0) {
279 *
this = QDeadlineTimer(timerType);
280 t1 = std::numeric_limits<qint64>::min();
282 *
this = current(timerType);
283 milliseconds ms(msecs);
284 t1 = add_saturate(t1, ms);
310void QDeadlineTimer::setPreciseRemainingTime(qint64 secs, qint64 nsecs, Qt::TimerType timerType)
noexcept
313 *
this = QDeadlineTimer(Forever, timerType);
314 }
else if (secs == 0 && nsecs == 0) {
315 *
this = QDeadlineTimer(timerType);
316 t1 = std::numeric_limits<qint64>::min();
318 *
this = current(timerType);
319 t1 = add_saturate(t1, seconds{secs}, nanoseconds{nsecs});
527void QDeadlineTimer::setDeadline(qint64 msecs, Qt::TimerType timerType)
noexcept
529 if (msecs == TimeReference::Max) {
530 *
this = QDeadlineTimer(Forever, timerType);
535 t1 = add_saturate(0, milliseconds{msecs});