diff options
author | Henrik Rydberg <rydberg@euromail.se> | 2012-09-15 09:15:58 -0400 |
---|---|---|
committer | Henrik Rydberg <rydberg@euromail.se> | 2012-09-19 13:50:17 -0400 |
commit | 8d18fba282120a4a8e4416d1202522ffae8cad58 (patch) | |
tree | 22e3ddabba314c9ad544b9fefe004194205c2940 /drivers/input/input.c | |
parent | 4cbe5a555fa58a79b6ecbb6c531b8bab0650778d (diff) |
Input: Break out MT data
Move all MT-related things to a separate place. This saves some
bytes for non-mt input devices, and prepares for new MT features.
Reviewed-and-tested-by: Benjamin Tissoires <benjamin.tissoires@enac.fr>
Tested-by: Ping Cheng <pingc@wacom.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'drivers/input/input.c')
-rw-r--r-- | drivers/input/input.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c index 8921c6180c51..79a4a2ad74de 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c | |||
@@ -166,6 +166,7 @@ static void input_stop_autorepeat(struct input_dev *dev) | |||
166 | static int input_handle_abs_event(struct input_dev *dev, | 166 | static int input_handle_abs_event(struct input_dev *dev, |
167 | unsigned int code, int *pval) | 167 | unsigned int code, int *pval) |
168 | { | 168 | { |
169 | struct input_mt *mt = dev->mt; | ||
169 | bool is_mt_event; | 170 | bool is_mt_event; |
170 | int *pold; | 171 | int *pold; |
171 | 172 | ||
@@ -174,8 +175,8 @@ static int input_handle_abs_event(struct input_dev *dev, | |||
174 | * "Stage" the event; we'll flush it later, when we | 175 | * "Stage" the event; we'll flush it later, when we |
175 | * get actual touch data. | 176 | * get actual touch data. |
176 | */ | 177 | */ |
177 | if (*pval >= 0 && *pval < dev->mtsize) | 178 | if (mt && *pval >= 0 && *pval < mt->num_slots) |
178 | dev->slot = *pval; | 179 | mt->slot = *pval; |
179 | 180 | ||
180 | return INPUT_IGNORE_EVENT; | 181 | return INPUT_IGNORE_EVENT; |
181 | } | 182 | } |
@@ -184,9 +185,8 @@ static int input_handle_abs_event(struct input_dev *dev, | |||
184 | 185 | ||
185 | if (!is_mt_event) { | 186 | if (!is_mt_event) { |
186 | pold = &dev->absinfo[code].value; | 187 | pold = &dev->absinfo[code].value; |
187 | } else if (dev->mt) { | 188 | } else if (mt) { |
188 | struct input_mt_slot *mtslot = &dev->mt[dev->slot]; | 189 | pold = &mt->slots[mt->slot].abs[code - ABS_MT_FIRST]; |
189 | pold = &mtslot->abs[code - ABS_MT_FIRST]; | ||
190 | } else { | 190 | } else { |
191 | /* | 191 | /* |
192 | * Bypass filtering for multi-touch events when | 192 | * Bypass filtering for multi-touch events when |
@@ -205,9 +205,9 @@ static int input_handle_abs_event(struct input_dev *dev, | |||
205 | } | 205 | } |
206 | 206 | ||
207 | /* Flush pending "slot" event */ | 207 | /* Flush pending "slot" event */ |
208 | if (is_mt_event && dev->slot != input_abs_get_val(dev, ABS_MT_SLOT)) { | 208 | if (is_mt_event && mt && mt->slot != input_abs_get_val(dev, ABS_MT_SLOT)) { |
209 | input_abs_set_val(dev, ABS_MT_SLOT, dev->slot); | 209 | input_abs_set_val(dev, ABS_MT_SLOT, mt->slot); |
210 | input_pass_event(dev, EV_ABS, ABS_MT_SLOT, dev->slot); | 210 | input_pass_event(dev, EV_ABS, ABS_MT_SLOT, mt->slot); |
211 | } | 211 | } |
212 | 212 | ||
213 | return INPUT_PASS_TO_HANDLERS; | 213 | return INPUT_PASS_TO_HANDLERS; |
@@ -1751,8 +1751,8 @@ static unsigned int input_estimate_events_per_packet(struct input_dev *dev) | |||
1751 | int i; | 1751 | int i; |
1752 | unsigned int events; | 1752 | unsigned int events; |
1753 | 1753 | ||
1754 | if (dev->mtsize) { | 1754 | if (dev->mt) { |
1755 | mt_slots = dev->mtsize; | 1755 | mt_slots = dev->mt->num_slots; |
1756 | } else if (test_bit(ABS_MT_TRACKING_ID, dev->absbit)) { | 1756 | } else if (test_bit(ABS_MT_TRACKING_ID, dev->absbit)) { |
1757 | mt_slots = dev->absinfo[ABS_MT_TRACKING_ID].maximum - | 1757 | mt_slots = dev->absinfo[ABS_MT_TRACKING_ID].maximum - |
1758 | dev->absinfo[ABS_MT_TRACKING_ID].minimum + 1, | 1758 | dev->absinfo[ABS_MT_TRACKING_ID].minimum + 1, |