}
}
+ m_is_idle = 1;
+
if (this == eApp)
+ {
Py_BEGIN_ALLOW_THREADS
ret = ::poll(pfd, fdcount, poll_timeout);
Py_END_ALLOW_THREADS
- else
+ } else
ret = ::poll(pfd, fdcount, poll_timeout);
+
+ m_is_idle = 0;
/* ret > 0 means that there are some active poll entries. */
if (ret > 0)
{
timeval now, timeout;
gettimeofday(&now, 0);
- m_twisted_timer -= time_offset;
+ m_twisted_timer += time_offset; // apply pending offset
if (m_twisted_timer<=now) // timeout
return 0;
timeout = m_twisted_timer - now;
to = timeout.tv_sec * 1000 + timeout.tv_usec / 1000;
+ // remove pending offset .. it is re-applied in next call of processOneEvent.. applyTimeOffset
+ m_twisted_timer -= time_offset;
}
ret = processOneEvent(to, res, dict);
} while ( !ret && !(res && *res) );