Input: MT - add support for balanced slot assignment
Some devices are not fast enough to differentiate between a fast-moving contact and a new contact. This problem cannot be fully resolved because information is truly missing, but it is possible to safe-guard against obvious mistakes by restricting movement with a maximum displacement. The new problem formulation for dmax > 0 cannot benefit from the speedup for positive definite matrices, but since the convergence is faster, the result is about the same. For a handful of contacts, the latency difference is truly negligible. Suggested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Henrik Rydberg <rydberg@bitmath.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Este cometimento está contido em:

cometido por
Dmitry Torokhov

ascendente
60bcaae15e
cometimento
448c7f3830
@@ -435,7 +435,7 @@ static void alps_report_mt_data(struct psmouse *psmouse, int n)
|
||||
struct alps_fields *f = &priv->f;
|
||||
int i, slot[MAX_TOUCHES];
|
||||
|
||||
input_mt_assign_slots(dev, slot, f->mt, n);
|
||||
input_mt_assign_slots(dev, slot, f->mt, n, 0);
|
||||
for (i = 0; i < n; i++)
|
||||
alps_set_slot(dev, slot[i], f->mt[i].x, f->mt[i].y);
|
||||
|
||||
|
@@ -564,7 +564,7 @@ static int report_tp_state(struct bcm5974 *dev, int size)
|
||||
dev->index[n++] = &f[i];
|
||||
}
|
||||
|
||||
input_mt_assign_slots(input, dev->slots, dev->pos, n);
|
||||
input_mt_assign_slots(input, dev->slots, dev->pos, n, 0);
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
report_finger_data(input, dev->slots[i],
|
||||
|
@@ -538,7 +538,7 @@ static void cypress_process_packet(struct psmouse *psmouse, bool zero_pkt)
|
||||
pos[i].y = contact->y;
|
||||
}
|
||||
|
||||
input_mt_assign_slots(input, slots, pos, n);
|
||||
input_mt_assign_slots(input, slots, pos, n, 0);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
contact = &report_data.contacts[i];
|
||||
|
@@ -809,7 +809,7 @@ static void synaptics_report_mt_data(struct psmouse *psmouse,
|
||||
pos[i].y = synaptics_invert_y(hw[i]->y);
|
||||
}
|
||||
|
||||
input_mt_assign_slots(dev, slot, pos, nsemi);
|
||||
input_mt_assign_slots(dev, slot, pos, nsemi, 0);
|
||||
|
||||
for (i = 0; i < nsemi; i++) {
|
||||
input_mt_slot(dev, slot[i]);
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador