48064bdcd6
Investigating the following gesture highlighted two slight implementation errors with choosing which slots to report in which slot when multiple contacts are present: Action SGM AGM (MTB slot:Contact) 1. Touch contact 0 (0:0) 2. Touch contact 1 (0:0, 1:1) 3. Lift contact 0 (1:1) 4. Touch contacts 2,3 (0:2, 1:3) In step 4, slot 1 was not being cleared first, which means the same tracking ID was being used for reporting both the old contact 1 and the new contact 3. This could result in "drumroll", where the old contact 1 would appear to suddenly jump to new finger 3 position. Similarly, if contacts 2 & 3 are not detected at the same sample, step 4 is split into two: Action SGM AGM (MTB slot:contact) 1. Touch contact 0 (0:0) 2. Touch contact 1 (0:0, 1:1) 3. Lift contact 0 (1:1) 4. Touch contact 2 (0:2, 1:1) 5. Touch contact 3 (0:2, 1:3) In this case, there was also a bug. In step 4, when contact 1 moves from SGM to AGM and contact 2 is first reported in SGM, slot 0 was actually empty. So slot 0 can be used to report the new SGM (contact 0), immediately. Since it was empty, contact 2 in slot 0 will get a new tracking ID. Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
||
---|---|---|
.. | ||
alps.c | ||
alps.h | ||
amimouse.c | ||
appletouch.c | ||
atarimouse.c | ||
bcm5974.c | ||
cyapa.c | ||
cypress_ps2.c | ||
cypress_ps2.h | ||
elantech.c | ||
elantech.h | ||
gpio_mouse.c | ||
hgpk.c | ||
hgpk.h | ||
inport.c | ||
Kconfig | ||
lifebook.c | ||
lifebook.h | ||
logibm.c | ||
logips2pp.c | ||
logips2pp.h | ||
Makefile | ||
maplemouse.c | ||
navpoint.c | ||
pc110pad.c | ||
psmouse-base.c | ||
psmouse.h | ||
pxa930_trkball.c | ||
rpcmouse.c | ||
sentelic.c | ||
sentelic.h | ||
sermouse.c | ||
synaptics_i2c.c | ||
synaptics_usb.c | ||
synaptics.c | ||
synaptics.h | ||
touchkit_ps2.c | ||
touchkit_ps2.h | ||
trackpoint.c | ||
trackpoint.h | ||
vsxxxaa.c |