diff options
author | Thomas McGuire <thomas.mcguire.qnx@kdab.com> | 2012-10-05 15:55:43 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-08 08:33:48 +0200 |
commit | ba8f3002d49d9941b2991fbe4d78883ea59827b2 (patch) | |
tree | 6a1191f91f7e32376124c6bf08563580e3e4e796 /src/corelib | |
parent | 4a755752e919b8a6d68bea265c16c44b90eeb545 (diff) |
QNX: Fix input lag
We were breaking out of select() too early with a timeout of -1.
Change-Id: Icd47b307a6f3a9d11c862722759e24f560e72e9e
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/kernel/qeventdispatcher_blackberry.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_blackberry.cpp b/src/corelib/kernel/qeventdispatcher_blackberry.cpp index 626692c0d6..a553999121 100644 --- a/src/corelib/kernel/qeventdispatcher_blackberry.cpp +++ b/src/corelib/kernel/qeventdispatcher_blackberry.cpp @@ -245,6 +245,14 @@ void QEventDispatcherBlackberry::unregisterSocketNotifier(QSocketNotifier *notif static inline bool updateTimeout(int *timeout, const struct timeval &start) { + // A timeout of -1 means we should block indefinitely. If we get here, we got woken up by a + // non-IO BPS event, and that event has been processed already. This means we can go back and + // block in bps_get_event(). + // Note that processing the BPS event might have triggered a wakeup, in that case we get a + // IO event in the next bps_get_event() right away. + if (*timeout == -1) + return true; + if (Q_UNLIKELY(!QElapsedTimer::isMonotonic())) { // we cannot recalculate the timeout without a monotonic clock as the time may have changed return false; |