diff options
author | Benjamin Tissoires <benjamin.tissoires@gmail.com> | 2012-11-14 19:59:17 +0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2012-11-15 13:08:40 +0400 |
commit | 54f4c0c3e9d9ad50bf58a4f7c2bbdfb3fa4ab3a7 (patch) | |
tree | 3542c485b9e262fb10129e377036ba90c01bb7b1 /drivers/hid | |
parent | f262d1fa2c651a5e2f92b6aee8779597631cd5d4 (diff) | |
download | linux-54f4c0c3e9d9ad50bf58a4f7c2bbdfb3fa4ab3a7.tar.xz |
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, return 0; } - if (usage->hid == td->last_slot_field) - mt_complete_slot(td, field->hidinput->input); - - if (field->index == td->last_field_index - && td->num_received >= td->num_expected) - mt_sync_frame(td, field->hidinput->input); + if (usage->usage_index + 1 == field->report_count) { + /* we only take into account the last report. */ + if (usage->hid == td->last_slot_field) + mt_complete_slot(td, field->hidinput->input); + + if (field->index == td->last_field_index + && td->num_received >= td->num_expected) + mt_sync_frame(td, field->hidinput->input); + } } |