From ca0cd584d2f84110a36eec540bb4afac9172fe4e Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Sat, 1 Sep 2012 16:15:43 +0200 Subject: [PATCH] --- yaml --- r: 323412 b: refs/heads/master c: 7c75bf99271139ca7cb2d0cca3be11f1f7c59efd h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/input/input-mt.c | 1 - trunk/drivers/input/input.c | 10 +++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 0b3069693bd9..02f1f570dd0c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8d18fba282120a4a8e4416d1202522ffae8cad58 +refs/heads/master: 7c75bf99271139ca7cb2d0cca3be11f1f7c59efd diff --git a/trunk/drivers/input/input-mt.c b/trunk/drivers/input/input-mt.c index 37ee1f925d23..6020d06652a8 100644 --- a/trunk/drivers/input/input-mt.c +++ b/trunk/drivers/input/input-mt.c @@ -42,7 +42,6 @@ int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots) mt->num_slots = num_slots; input_set_abs_params(dev, ABS_MT_SLOT, 0, num_slots - 1, 0, 0); input_set_abs_params(dev, ABS_MT_TRACKING_ID, 0, TRKID_MAX, 0, 0); - input_set_events_per_packet(dev, 6 * num_slots); /* Mark slots as 'unused' */ for (i = 0; i < num_slots; i++) diff --git a/trunk/drivers/input/input.c b/trunk/drivers/input/input.c index 79a4a2ad74de..fb3a2c112deb 100644 --- a/trunk/drivers/input/input.c +++ b/trunk/drivers/input/input.c @@ -1778,6 +1778,9 @@ static unsigned int input_estimate_events_per_packet(struct input_dev *dev) if (test_bit(i, dev->relbit)) events++; + /* Make room for KEY and MSC events */ + events += 7; + return events; } @@ -1816,6 +1819,7 @@ int input_register_device(struct input_dev *dev) { static atomic_t input_no = ATOMIC_INIT(0); struct input_handler *handler; + unsigned int packet_size; const char *path; int error; @@ -1828,9 +1832,9 @@ int input_register_device(struct input_dev *dev) /* Make sure that bitmasks not mentioned in dev->evbit are clean. */ input_cleanse_bitmasks(dev); - if (!dev->hint_events_per_packet) - dev->hint_events_per_packet = - input_estimate_events_per_packet(dev); + packet_size = input_estimate_events_per_packet(dev); + if (dev->hint_events_per_packet < packet_size) + dev->hint_events_per_packet = packet_size; /* * If delay and period are pre-set by the driver, then autorepeating