diff options
author | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2012-06-02 22:55:26 +0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-04 09:25:39 +0200 |
commit | d0b4c7b159a934dfd042b981f247388014d960af (patch) | |
tree | fb38a843bf037d3c89295f17f62c762275bd043f | |
parent | 3892ccaca7d16ba056bf7c91cc15522bcf3754a3 (diff) |
Report mouse events when the driver says so
Generate mouse events in SYN only, when all available data has
been reported.
Change-Id: I74a9e9dd603ee0747b00115fac0405b1c600bdeb
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
-rw-r--r-- | src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp index 2e318a0c3a..e435f40c2d 100644 --- a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp +++ b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp @@ -121,7 +121,7 @@ void QEvdevMouseHandler::readMouseData() { struct ::input_event buffer[32]; int n = 0; - bool posChanged = false; + bool posChanged = false, btnChanged = false; bool pendingMouseEvent = false; int eventCompressCount = 0; forever { @@ -177,9 +177,7 @@ void QEvdevMouseHandler::readMouseData() } } else if (data->type == EV_KEY && data->code == BTN_TOUCH) { m_buttons = data->value ? Qt::LeftButton : Qt::NoButton; - - sendMouseEvent(); - pendingMouseEvent = false; + btnChanged = true; } else if (data->type == EV_KEY && data->code >= BTN_LEFT && data->code <= BTN_JOYSTICK) { Qt::MouseButton button = Qt::NoButton; // BTN_LEFT == 0x110 in kernel's input.h @@ -206,10 +204,13 @@ void QEvdevMouseHandler::readMouseData() m_buttons |= button; else m_buttons &= ~button; - sendMouseEvent(); - pendingMouseEvent = false; + btnChanged = true; } else if (data->type == EV_SYN && data->code == SYN_REPORT) { - if (posChanged) { + if (btnChanged) { + btnChanged = posChanged = false; + sendMouseEvent(); + pendingMouseEvent = false; + } else if (posChanged) { posChanged = false; if (m_compression) { pendingMouseEvent = true; |