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>
This commit is contained in:
committed by
Dmitry Torokhov
parent
aefca8ba5f
commit
937ad5c1e3
@@ -502,18 +502,23 @@ static void atp_complete(struct urb* urb)
|
|||||||
|
|
||||||
/* reset the accumulator on release */
|
/* reset the accumulator on release */
|
||||||
memset(dev->xy_acc, 0, sizeof(dev->xy_acc));
|
memset(dev->xy_acc, 0, sizeof(dev->xy_acc));
|
||||||
|
}
|
||||||
|
|
||||||
/* Geyser 3 will continue to send packets continually after
|
/* Geyser 3 will continue to send packets continually after
|
||||||
the first touch unless reinitialised. Do so if it's been
|
the first touch unless reinitialised. Do so if it's been
|
||||||
idle for a while in order to avoid waking the kernel up
|
idle for a while in order to avoid waking the kernel up
|
||||||
several hundred times a second */
|
several hundred times a second */
|
||||||
if (!key && atp_is_geyser_3(dev)) {
|
|
||||||
|
if (atp_is_geyser_3(dev)) {
|
||||||
|
if (!x && !y && !key) {
|
||||||
dev->idlecount++;
|
dev->idlecount++;
|
||||||
if (dev->idlecount == 10) {
|
if (dev->idlecount == 10) {
|
||||||
dev->valid = 0;
|
dev->valid = 0;
|
||||||
schedule_work(&dev->work);
|
schedule_work(&dev->work);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
dev->idlecount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
input_report_key(dev->input, BTN_LEFT, key);
|
input_report_key(dev->input, BTN_LEFT, key);
|
||||||
|
Reference in New Issue
Block a user