diff options
author | Benjamin Tissoires <benjamin.tissoires@gmail.com> | 2012-11-14 10:59:17 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2012-11-15 04:08:40 -0500 |
commit | 54f4c0c3e9d9ad50bf58a4f7c2bbdfb3fa4ab3a7 (patch) | |
tree | 3542c485b9e262fb10129e377036ba90c01bb7b1 /drivers/hid | |
parent | f262d1fa2c651a5e2f92b6aee8779597631cd5d4 (diff) |
HID: multitouch: support arrays for the split of the touches in a report
Win8 certification introduced the ability to transmit two X and two Y per
touch. The specification precises that it must be used in an array.
This test guarantees that we split the touches on the last element
in this array.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Reviewed-by: Henrik Rydberg <rydberg@euromail.se>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r-- | drivers/hid/hid-multitouch.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c index 3687f797b731..3d2e6bbb0046 100644 --- a/drivers/hid/hid-multitouch.c +++ b/drivers/hid/hid-multitouch.c | |||
@@ -576,12 +576,15 @@ static int mt_event(struct hid_device *hid, struct hid_field *field, | |||
576 | return 0; | 576 | return 0; |
577 | } | 577 | } |
578 | 578 | ||
579 | if (usage->hid == td->last_slot_field) | 579 | if (usage->usage_index + 1 == field->report_count) { |
580 | mt_complete_slot(td, field->hidinput->input); | 580 | /* we only take into account the last report. */ |
581 | 581 | if (usage->hid == td->last_slot_field) | |
582 | if (field->index == td->last_field_index | 582 | mt_complete_slot(td, field->hidinput->input); |
583 | && td->num_received >= td->num_expected) | 583 | |
584 | mt_sync_frame(td, field->hidinput->input); | 584 | if (field->index == td->last_field_index |
585 | && td->num_received >= td->num_expected) | ||
586 | mt_sync_frame(td, field->hidinput->input); | ||
587 | } | ||
585 | 588 | ||
586 | } | 589 | } |
587 | 590 | ||