summaryrefslogtreecommitdiffstats
path: root/drivers/hid/wacom_wac.c
diff options
context:
space:
mode:
authorPing Cheng <pinglinux@gmail.com>2015-02-20 23:25:58 +0100
committerJiri Kosina <jkosina@suse.cz>2015-03-03 00:27:09 +0100
commit486b908d4412510d66ee348ba765de8d93441345 (patch)
treee48f8ab2bdd88dc3c02dcc7385b3e2c33a19e0ea /drivers/hid/wacom_wac.c
parentHID: microsoft: Add ID for NE7K wireless keyboard (diff)
downloadlinux-486b908d4412510d66ee348ba765de8d93441345.tar.xz
linux-486b908d4412510d66ee348ba765de8d93441345.zip
HID: wacom: do not send pen events before touch is up/forced out
If pen comes in proximity while touch is down, we force touch up before sending pen events. Otherwise, there can be unfinished touch events compete with pen events. This idea has been fully implemented for Tablet PCs. But other tablets that support both pen and touch are not fully considered. Signed-off-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/wacom_wac.c')
-rw-r--r--drivers/hid/wacom_wac.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index 046351cf17f3..69827c928e50 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -554,6 +554,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
if (features->quirks & WACOM_QUIRK_MULTI_INPUT)
wacom->shared->stylus_in_proximity = true;
+ if (wacom->shared->touch_down)
+ return 1;
+
/* in Range while exiting */
if (((data[1] & 0xfe) == 0x20) && wacom->reporting_data) {
input_report_key(input, BTN_TOUCH, 0);
@@ -1759,6 +1762,9 @@ static int wacom_bpt_pen(struct wacom_wac *wacom)
return 0;
}
+ if (wacom->shared->touch_down)
+ return 0;
+
prox = (data[1] & 0x20) == 0x20;
/*