QThread/Unix: use chrono for time arithmetic
Change-Id: I090d204db6126b3b6336637779b190509a9f0778 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
7898de4258
commit
fee46831fd
@ -488,27 +488,31 @@ void QThread::yieldCurrentThread()
|
|||||||
|
|
||||||
#endif // QT_CONFIG(thread)
|
#endif // QT_CONFIG(thread)
|
||||||
|
|
||||||
static timespec makeTimespec(time_t secs, long nsecs)
|
static timespec makeTimespec(std::chrono::nanoseconds nsecs)
|
||||||
{
|
{
|
||||||
|
using namespace std::chrono;
|
||||||
|
const seconds secs = duration_cast<seconds>(nsecs);
|
||||||
|
const nanoseconds frac = nsecs - secs;
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
ts.tv_sec = secs;
|
ts.tv_sec = secs.count();
|
||||||
ts.tv_nsec = nsecs;
|
ts.tv_nsec = frac.count();
|
||||||
return ts;
|
return ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void QThread::sleep(unsigned long secs)
|
void QThread::sleep(unsigned long secs)
|
||||||
{
|
{
|
||||||
qt_nanosleep(makeTimespec(secs, 0));
|
qt_nanosleep(makeTimespec(std::chrono::seconds{secs}));
|
||||||
}
|
}
|
||||||
|
|
||||||
void QThread::msleep(unsigned long msecs)
|
void QThread::msleep(unsigned long msecs)
|
||||||
{
|
{
|
||||||
qt_nanosleep(makeTimespec(msecs / 1000, msecs % 1000 * 1000 * 1000));
|
qt_nanosleep(makeTimespec(std::chrono::milliseconds{msecs}));
|
||||||
}
|
}
|
||||||
|
|
||||||
void QThread::usleep(unsigned long usecs)
|
void QThread::usleep(unsigned long usecs)
|
||||||
{
|
{
|
||||||
qt_nanosleep(makeTimespec(usecs / 1000 / 1000, usecs % (1000*1000) * 1000));
|
qt_nanosleep(makeTimespec(std::chrono::microseconds{usecs}));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QT_CONFIG(thread)
|
#if QT_CONFIG(thread)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user