On Wed, Feb 22, 2012 at 08:11:58PM -0800, Chase Douglas wrote: > On 02/22/2012 07:59 PM, Peter Hutterer wrote: > >On Thu, Feb 09, 2012 at 06:53:05PM -0800, Chase Douglas wrote: > >>The results depend on the data rate of the device. A device with a > >>higher data rate, and thus lower individual deltas, will behave > >>differently with the regression calculation. > >> > >>This can be verified on Synaptics semi-mt clickpads. The data rate is > >>halved when two or more touches are on the device. When trying to press > >>a button and drag the cursor with another touch, the motion will feel > >>faster than dragging with only one touch on the device. > >> > >>Signed-off-by: Chase Douglas<[email protected]> > >>--- > >> src/synaptics.c | 7 +++---- > >> 1 files changed, 3 insertions(+), 4 deletions(-) > >> > >>diff --git a/src/synaptics.c b/src/synaptics.c > >>index dd138ea..9d8f3ee 100644 > >>--- a/src/synaptics.c > >>+++ b/src/synaptics.c > >>@@ -2046,9 +2046,8 @@ get_delta(SynapticsPrivate *priv, const struct > >>SynapticsHwState *hw, > >> int x_edge_speed = 0; > >> int y_edge_speed = 0; > >> > >>- /* HIST is full enough: priv->count_packet_finger> 3 */ > >>- *dx = estimate_delta(hw->x, HIST(0).x, HIST(1).x, HIST(2).x); > >>- *dy = estimate_delta(hw->y, HIST(0).y, HIST(1).y, HIST(2).y); > >>+ *dx = hw->x - HIST(0).x; > >>+ *dy = hw->y - HIST(0).y; > >> > >> if ((priv->tap_state == TS_DRAG) || para->edge_motion_use_always) > >> get_edge_speed(priv, hw, edge,&x_edge_speed,&y_edge_speed); > >>@@ -2118,7 +2117,7 @@ ComputeDeltas(SynapticsPrivate *priv, const struct > >>SynapticsHwState *hw, > >> * POLL_MS declaration. */ > >> delay = MIN(delay, POLL_MS); > >> > >>- if (priv->count_packet_finger<= 3) /* min. 3 packets, see get_delta() > >>*/ > >>+ if (priv->count_packet_finger<= 1) > >> goto out; /* skip the lot */ > >> > >> if (priv->moving_state == MS_TRACKSTICK) > >>-- > >>1.7.8.3 > >> > > > >uhm, that commit seems a bit too simple. how does this affect other devices? > > It doesn't feel any different to me, to be honest. It should affect > all devices equally, too. Many people have been testing it and no > one has mentioned a change in motion behavior. > > I think estimate_delta() is mainly used for smoothing out the data > using interpolation. It's used in other parts of the driver too. I > think having the smoothing for pointer motion is unnecessary, > though, since we have acceleration profiles. In other words, there's > too much smoothing going on already, and dropping this doesn't cause > a material difference in the feel of motion.
ok. However that brings up the question - why not remove estimate_delta altogether then? Cheers, Peter _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
