aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSoeren Sonnenburg <kernel@nn7.de>2007-10-13 00:31:15 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2007-10-13 00:31:15 -0400
commit937ad5c1e35191d29d305280525394fe87f4ac4f (patch)
treea40a69b805d6244b7efac3007a4d31aa03b1f0fa /drivers
parentaefca8ba5f1b95431e33a52736bab128fc4f80d4 (diff)
Input: appletouch - another fix for idle reset logic
Make sure we reset idlecount when we get a good (non-empty) packet. Signed-off-by: Soeren Sonnenburg <kernel@nn7.de> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/mouse/appletouch.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/input/mouse/appletouch.c b/drivers/input/mouse/appletouch.c
index a1804bfdbb8..0117817bf53 100644
--- a/drivers/input/mouse/appletouch.c
+++ b/drivers/input/mouse/appletouch.c
@@ -502,18 +502,23 @@ static void atp_complete(struct urb* urb)
/* reset the accumulator on release */
memset(dev->xy_acc, 0, sizeof(dev->xy_acc));
+ }
+
+ /* Geyser 3 will continue to send packets continually after
+ the first touch unless reinitialised. Do so if it's been
+ idle for a while in order to avoid waking the kernel up
+ several hundred times a second */
- /* Geyser 3 will continue to send packets continually after
- the first touch unless reinitialised. Do so if it's been
- idle for a while in order to avoid waking the kernel up
- several hundred times a second */
- if (!key && atp_is_geyser_3(dev)) {
+ if (atp_is_geyser_3(dev)) {
+ if (!x && !y && !key) {
dev->idlecount++;
if (dev->idlecount == 10) {
dev->valid = 0;
schedule_work(&dev->work);
}
}
+ else
+ dev->idlecount = 0;
}
input_report_key(dev->input, BTN_LEFT, key);