Input: wacom - ignore unwanted bamboo packets
Bamboo's Pen and Touch packets always start with a value of 0x02 in first byte. In 3rd gen Bamboo's, the hw is now periodically sending some additional packets with unrelated data and uses a value other than 0x02 to inform driver this. Ignore those packets now. This was reported by users as bad behavior in Gimp. The invalid packets being processed made the stylus report out of proximity for the 1 packet and this triggered some secondary bug which caused Gimp to stop drawing until user really took pen out of proximity of tablet. Signed-off-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
Родитель
d2cc817a76
Коммит
5a6c865d98
|
@ -799,6 +799,9 @@ static int wacom_bpt_touch(struct wacom_wac *wacom)
|
|||
unsigned char *data = wacom->data;
|
||||
int i;
|
||||
|
||||
if (data[0] != 0x02)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
int p = data[9 * i + 2];
|
||||
bool touch = p && !wacom->shared->stylus_in_proximity;
|
||||
|
@ -875,6 +878,9 @@ static int wacom_bpt3_touch(struct wacom_wac *wacom)
|
|||
int count = data[1] & 0x03;
|
||||
int i;
|
||||
|
||||
if (data[0] != 0x02)
|
||||
return 0;
|
||||
|
||||
/* data has up to 7 fixed sized 8-byte messages starting at data[2] */
|
||||
for (i = 0; i < count; i++) {
|
||||
int offset = (8 * i) + 2;
|
||||
|
@ -900,6 +906,9 @@ static int wacom_bpt_pen(struct wacom_wac *wacom)
|
|||
unsigned char *data = wacom->data;
|
||||
int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0;
|
||||
|
||||
if (data[0] != 0x02)
|
||||
return 0;
|
||||
|
||||
prox = (data[1] & 0x20) == 0x20;
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче