Don't interpret ABS_MT_TOUCH_MAJOR == 0 as touch release

On n8013 at least, this event is sometimes/often sent on touch start which
causes touches to be randomly rejected and throws you back to the start screen.

Touch releases still work fine for me, since it sends ABS_MT_TRACKING_ID == -1
for that purpose.

Adds a flag TW_IGNORE_MAJOR_AXIS_0 to configure this behavior.

Change-Id: I14bb036a2c2d4ee676b642c3ab297c55bb6c2084
This commit is contained in:
Ibrahim Awwal
2014-01-04 12:38:26 -08:00
parent 84a3f1ac24
commit 2e9cb01bda
2 changed files with 6 additions and 0 deletions
+4
View File
@@ -52,6 +52,10 @@ ifeq ($(BOARD_HAS_FLIPPED_SCREEN), true)
LOCAL_CFLAGS += -DBOARD_HAS_FLIPPED_SCREEN
endif
ifeq ($(TW_IGNORE_MAJOR_AXIS_0), true)
LOCAL_CFLAGS += -DTW_IGNORE_MAJOR_AXIS_0
endif
ifneq ($(BOARD_USE_CUSTOM_RECOVERY_FONT),)
LOCAL_CFLAGS += -DBOARD_USE_CUSTOM_RECOVERY_FONT=$(BOARD_USE_CUSTOM_RECOVERY_FONT)
endif
+2
View File
@@ -395,10 +395,12 @@ static int vk_modify(struct ev *e, struct input_event *ev)
case ABS_MT_TOUCH_MAJOR: //30
if (ev->value == 0)
{
#ifndef TW_IGNORE_MAJOR_AXIS_0
// We're in a touch release, although some devices will still send positions as well
e->mt_p.x = 0;
e->mt_p.y = 0;
touchReleaseOnNextSynReport = 1;
#endif
}
#ifdef _EVENT_LOGGING
printf("EV: %s => EV_ABS ABS_MT_TOUCH_MAJOR %d\n", e->deviceName, ev->value);