From d0b4c7b159a934dfd042b981f247388014d960af Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Sat, 2 Jun 2012 22:55:26 +0300 Subject: Report mouse events when the driver says so MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generate mouse events in SYN only, when all available data has been reported. Change-Id: I74a9e9dd603ee0747b00115fac0405b1c600bdeb Reviewed-by: Jørgen Lind --- .../input/evdevmouse/qevdevmousehandler.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/platformsupport/input') 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; -- cgit v1.2.3