Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 323420
b: refs/heads/master
c: 17a465a
h: refs/heads/master
v: v3
  • Loading branch information
Henrik Rydberg committed Sep 19, 2012
1 parent 5d82006 commit 3431af5
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7c1a87897c75139dec258eb03e1a24fb73385b73
refs/heads/master: 17a465a7f2d6ce31738a3a76591afeab165f185a
32 changes: 32 additions & 0 deletions trunk/drivers/input/input-mt.c
Original file line number Diff line number Diff line change
Expand Up @@ -383,3 +383,35 @@ int input_mt_assign_slots(struct input_dev *dev, int *slots,
return 0;
}
EXPORT_SYMBOL(input_mt_assign_slots);

/**
* input_mt_get_slot_by_key() - return slot matching key
* @dev: input device with allocated MT slots
* @key: the key of the sought slot
*
* Returns the slot of the given key, if it exists, otherwise
* set the key on the first unused slot and return.
*
* If no available slot can be found, -1 is returned.
*/
int input_mt_get_slot_by_key(struct input_dev *dev, int key)
{
struct input_mt *mt = dev->mt;
struct input_mt_slot *s;

if (!mt)
return -1;

for (s = mt->slots; s != mt->slots + mt->num_slots; s++)
if (input_mt_is_active(s) && s->key == key)
return s - mt->slots;

for (s = mt->slots; s != mt->slots + mt->num_slots; s++)
if (!input_mt_is_active(s)) {
s->key = key;
return s - mt->slots;
}

return -1;
}
EXPORT_SYMBOL(input_mt_get_slot_by_key);
4 changes: 4 additions & 0 deletions trunk/include/linux/input/mt.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,12 @@
* struct input_mt_slot - represents the state of an input MT slot
* @abs: holds current values of ABS_MT axes for this slot
* @frame: last frame at which input_mt_report_slot_state() was called
* @key: optional driver designation of this slot
*/
struct input_mt_slot {
int abs[ABS_MT_LAST - ABS_MT_FIRST + 1];
unsigned int frame;
unsigned int key;
};

/**
Expand Down Expand Up @@ -111,4 +113,6 @@ struct input_mt_pos {
int input_mt_assign_slots(struct input_dev *dev, int *slots,
const struct input_mt_pos *pos, int num_pos);

int input_mt_get_slot_by_key(struct input_dev *dev, int key);

#endif

0 comments on commit 3431af5

Please sign in to comment.