Fixes high CPU usage on timer expiration when using glib event loop.
GTimerSource has 1ms accuracy, QTimerInfoList::timerWait() has 1us accuracy. So when there is less than 1 ms left on the timer we enter a tight loop checking for timer expiration since we don't round up the timerWait() timer to the nearest millisecond. Task-number: QTBUG-7618 Change-Id: I684c9236324f598bc69c6810be270aa47c791f91 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
fbcb438226
commit
c5f16efa34
|
|
@ -133,7 +133,7 @@ static gboolean timerSourcePrepareHelper(GTimerSource *src, gint *timeout)
|
|||
{
|
||||
timeval tv = { 0l, 0l };
|
||||
if (!(src->processEventsFlags & QEventLoop::X11ExcludeTimers) && src->timerList.timerWait(tv))
|
||||
*timeout = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
|
||||
*timeout = (tv.tv_sec * 1000) + ((tv.tv_usec + 999) / 1000);
|
||||
else
|
||||
*timeout = -1;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue