diff mbox

[1/2] HID: wacom: do not send pen events before touch is up/forced out

Message ID 1424471158-4668-1-git-send-email-pingc@wacom.com (mailing list archive)
State New, archived
Delegated to: Jiri Kosina
Headers show

Commit Message

Ping Cheng Feb. 20, 2015, 10:25 p.m. UTC
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>
---
 drivers/hid/wacom_wac.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Gerecke, Jason March 5, 2015, 12:27 a.m. UTC | #1
On 2/20/2015 2:25 PM, Ping Cheng wrote:
> 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>

Acked-by: Jason Gerecke <killertofu@gmail.com>
diff mbox

Patch

diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index 046351c..69827c9 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;
 
 	/*