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 | |
| 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>
| -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 | ||
