QElapsedTimer/Unix: Improve accuracy for millisecond values
Task-number: QTBUG-42365 Change-Id: Iee390bc0014e32b3bc5ef144ea9e1c677ab66278 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
c36b559196
commit
51ddaabb81
@ -140,11 +140,6 @@ static int unixCheckClockType()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline qint64 fractionAdjustment()
|
|
||||||
{
|
|
||||||
return 1000*1000ull;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool QElapsedTimer::isMonotonic() Q_DECL_NOTHROW
|
bool QElapsedTimer::isMonotonic() Q_DECL_NOTHROW
|
||||||
{
|
{
|
||||||
return clockType() == MonotonicClock;
|
return clockType() == MonotonicClock;
|
||||||
@ -196,7 +191,7 @@ static qint64 elapsedAndRestart(qint64 sec, qint64 frac,
|
|||||||
do_gettime(nowsec, nowfrac);
|
do_gettime(nowsec, nowfrac);
|
||||||
sec = *nowsec - sec;
|
sec = *nowsec - sec;
|
||||||
frac = *nowfrac - frac;
|
frac = *nowfrac - frac;
|
||||||
return sec * Q_INT64_C(1000) + frac / fractionAdjustment();
|
return (sec * Q_INT64_C(1000000000) + frac) / Q_INT64_C(1000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QElapsedTimer::start() Q_DECL_NOTHROW
|
void QElapsedTimer::start() Q_DECL_NOTHROW
|
||||||
@ -220,20 +215,19 @@ qint64 QElapsedTimer::nsecsElapsed() const Q_DECL_NOTHROW
|
|||||||
|
|
||||||
qint64 QElapsedTimer::elapsed() const Q_DECL_NOTHROW
|
qint64 QElapsedTimer::elapsed() const Q_DECL_NOTHROW
|
||||||
{
|
{
|
||||||
qint64 sec, frac;
|
return nsecsElapsed() / Q_INT64_C(1000000);
|
||||||
return elapsedAndRestart(t1, t2, &sec, &frac);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qint64 QElapsedTimer::msecsSinceReference() const Q_DECL_NOTHROW
|
qint64 QElapsedTimer::msecsSinceReference() const Q_DECL_NOTHROW
|
||||||
{
|
{
|
||||||
return t1 * Q_INT64_C(1000) + t2 / fractionAdjustment();
|
return t1 * Q_INT64_C(1000) + t2 / Q_INT64_C(1000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
qint64 QElapsedTimer::msecsTo(const QElapsedTimer &other) const Q_DECL_NOTHROW
|
qint64 QElapsedTimer::msecsTo(const QElapsedTimer &other) const Q_DECL_NOTHROW
|
||||||
{
|
{
|
||||||
qint64 secs = other.t1 - t1;
|
qint64 secs = other.t1 - t1;
|
||||||
qint64 fraction = other.t2 - t2;
|
qint64 fraction = other.t2 - t2;
|
||||||
return secs * Q_INT64_C(1000) + fraction / fractionAdjustment();
|
return (secs * Q_INT64_C(1000000000) + fraction) / Q_INT64_C(1000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
qint64 QElapsedTimer::secsTo(const QElapsedTimer &other) const Q_DECL_NOTHROW
|
qint64 QElapsedTimer::secsTo(const QElapsedTimer &other) const Q_DECL_NOTHROW
|
||||||
|
Loading…
x
Reference in New Issue
Block a user