From d6821a11bb6d664283ae96030044270ad68eaed0 Mon Sep 17 00:00:00 2001 From: Ethan Yonker Date: Wed, 26 Aug 2015 15:29:23 -0500 Subject: Add TW_IGNORE_ABS_MT_TRACKING_ID Fixes touch on Oppo R7 Plus Oppo R7 Plus, when recovery is flashed and booted from the actual recovery partition, the digitizer sends some extra touch data for up to 10 different touch slots even if no actual touch is present for those slots (ABS_MT_SLOT). This patch allows TWRP to handle touch data properly for this device and maybe others. Change-Id: I8f9171b605566788b674b3d4d96bd9f2f65736c2 --- minuitwrp/Android.mk | 4 ++++ minuitwrp/events.c | 10 ++++++++++ 2 files changed, 14 insertions(+) (limited to 'minuitwrp') diff --git a/minuitwrp/Android.mk b/minuitwrp/Android.mk index 188de9ded..76b4024cc 100644 --- a/minuitwrp/Android.mk +++ b/minuitwrp/Android.mk @@ -97,6 +97,10 @@ ifeq ($(TW_IGNORE_MT_POSITION_0), true) LOCAL_CFLAGS += -DTW_IGNORE_MT_POSITION_0 endif +ifeq ($(TW_IGNORE_ABS_MT_TRACKING_ID), true) +LOCAL_CFLAGS += -DTW_IGNORE_ABS_MT_TRACKING_ID +endif + ifneq ($(TW_INPUT_BLACKLIST),) LOCAL_CFLAGS += -DTW_INPUT_BLACKLIST=$(TW_INPUT_BLACKLIST) endif diff --git a/minuitwrp/events.c b/minuitwrp/events.c index 5df5338b2..1d2af6b7c 100644 --- a/minuitwrp/events.c +++ b/minuitwrp/events.c @@ -545,6 +545,12 @@ static int vk_modify(struct ev *e, struct input_event *ev) break; case ABS_MT_TRACKING_ID: //39 +#ifdef TW_IGNORE_ABS_MT_TRACKING_ID +#ifdef _EVENT_LOGGING + printf("EV: %s => EV_ABS ABS_MT_TRACKING_ID %d ignored\n", e->deviceName, ev->value); +#endif + return 1; +#endif if (ev->value < 0) { e->mt_p.x = 0; e->mt_p.y = 0; @@ -581,6 +587,10 @@ static int vk_modify(struct ev *e, struct input_event *ev) printf("EV: %s => EV_ABS ABS_MT_DISTANCE %d\n", e->deviceName, ev->value); return 1; break; + case ABS_MT_SLOT: + printf("EV: %s => ABS_MT_SLOT %d\n", e->deviceName, ev->value); + return 1; + break; #endif default: -- cgit v1.2.3