diff options
| author | Lars Knoll <lars.knoll@nokia.com> | 2012-04-16 12:04:34 +0200 |
|---|---|---|
| committer | Lars Knoll <lars.knoll@nokia.com> | 2012-04-16 12:04:34 +0200 |
| commit | 9bd032355163d92cda5e7e59ecd21214b131f187 (patch) | |
| tree | 002fa12558505683143c7eb08949a3d225bf0712 /src/plugins/generic/evdevkeyboard/qevdevkeyboardhandler.cpp | |
| parent | d037d25c3d5236623371cf051aaf6a9e59792ba7 (diff) | |
| parent | 41673c45dde2eb95ee21dd918235218399f2be2c (diff) | |
Merge remote-tracking branch 'origin/master' into api_changes
Conflicts:
configure
src/corelib/io/qurl.cpp
src/gui/kernel/qwindow.cpp
src/tools/moc/generator.cpp
src/widgets/kernel/qwidget_qpa.cpp
src/widgets/styles/qstyle.h
src/widgets/widgets/qtabbar.cpp
tests/auto/corelib/codecs/utf8/tst_utf8.cpp
Change-Id: Ia457228d6f684ec8184e13e8fcc9d25857b1751e
Diffstat (limited to 'src/plugins/generic/evdevkeyboard/qevdevkeyboardhandler.cpp')
| -rw-r--r-- | src/plugins/generic/evdevkeyboard/qevdevkeyboardhandler.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/plugins/generic/evdevkeyboard/qevdevkeyboardhandler.cpp b/src/plugins/generic/evdevkeyboard/qevdevkeyboardhandler.cpp index 73aa6419d36..eb29b853e78 100644 --- a/src/plugins/generic/evdevkeyboard/qevdevkeyboardhandler.cpp +++ b/src/plugins/generic/evdevkeyboard/qevdevkeyboardhandler.cpp @@ -168,16 +168,20 @@ void QEvdevKeyboardHandler::readKeycode() int n = 0; forever { - n = qt_safe_read(m_fd, reinterpret_cast<char *>(buffer) + n, sizeof(buffer) - n); + int result = qt_safe_read(m_fd, reinterpret_cast<char *>(buffer) + n, sizeof(buffer) - n); - if (n == 0) { + if (result == 0) { qWarning("Got EOF from the input device."); return; - } else if (n < 0 && (errno != EINTR && errno != EAGAIN)) { - qWarning("Could not read from input device: %s", strerror(errno)); - return; - } else if (n % sizeof(buffer[0]) == 0) { - break; + } else if (result < 0) { + if (errno != EINTR && errno != EAGAIN) { + qWarning("Could not read from input device: %s", strerror(errno)); + return; + } + } else { + n += result; + if (n % sizeof(buffer[0]) == 0) + break; } } |
