From 29ad484c1b357fd7fd670a6f252d097677b808f8 Mon Sep 17 00:00:00 2001 Message-Id: <29ad484c1b357fd7fd670a6f252d097677b808f8.1530402641.git.joeypabalinas@gmail.com> In-Reply-To: References: From: Joey Pabalinas To: linux-input@vger.kernel.org CC: linux-kernel@vger.kernel.org CC: Jiri Kosina CC: Benjamin Tissoires CC: Daniel Martin CC: Joey Pabalinas Date: Sat, 30 Jun 2018 13:29:56 -1000 Subject: [PATCH 3/4] HID: multitouch: drop reports containing invalid values Avoid processing reports containing invalid values to reduce multitouch input stutter. Signed-off-by: Joey Pabalinas 1 file changed, 9 insertions(+) diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c index c0654db0b736543ca0..08b50e5908cecdda66 100644 --- a/drivers/hid/hid-multitouch.c +++ b/drivers/hid/hid-multitouch.c @@ -694,10 +694,19 @@ static void mt_complete_slot(struct mt_device *td, struct input_dev *input) { if ((td->mtclass.quirks & MT_QUIRK_CONTACT_CNT_ACCURATE) && td->num_received >= td->num_expected) return; + /* drop invalid values after counting them */ + if (td->curdata.x == 0xffff && + td->curdata.y == 0xffff && + td->curdata.w == 0xffff && + td->curdata.h == 0xffff) { + td->num_received++; + return; + } + if (td->curvalid || (td->mtclass.quirks & MT_QUIRK_ALWAYS_VALID)) { int active; int slotnum = mt_compute_slot(td, input); struct mt_slot *s = &td->curdata; struct input_mt *mt = input->mt; -- 2.18.0