We expect to be receiving a steady 80 packets/sec (which gives 40 reports/sec with more than one finger on the pad, as Advanced Gesture Mode requires two PS/2 packets per report). Instead of a random scattering of magic 13 and 20ms numbers scattered throughout the driver, introduce POLL_MS as 14ms.
Having this here allows us to call back at a steady frequency to ensure that the finger motion remains steady. Signed-off-by: Daniel Stone <[email protected]> --- src/synaptics.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/synaptics.c b/src/synaptics.c index caf0528..8a7c6d1 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -92,6 +92,8 @@ typedef enum { LEFT_TOP_EDGE = TOP_EDGE | LEFT_EDGE } edge_type; +#define POLL_MS 14 + #define MAX(a, b) (((a)>(b))?(a):(b)) #define MIN(a, b) (((a)<(b))?(a):(b)) #define TIME_DIFF(a, b) ((int)((a)-(b))) @@ -1849,7 +1851,7 @@ ComputeDeltas(SynapticsPrivate *priv, const struct SynapticsHwState *hw, /* to create fluid edge motion, call back 'soon' * even in the absence of new hardware events */ - delay = MIN(delay, 13); + delay = MIN(delay, POLL_MS); if (priv->count_packet_finger <= 3) /* min. 3 packets, see get_delta() */ goto skip; /* skip the lot */ @@ -2191,7 +2193,7 @@ HandleScrolling(SynapticsPrivate *priv, struct SynapticsHwState *hw, double dtime = (hw->millis - HIST(0).millis) / 1000.0; double ddy = para->coasting_friction * dtime; priv->autoscroll_y += priv->autoscroll_yspd * dtime; - delay = MIN(delay, 20); + delay = MIN(delay, POLL_MS); while (priv->autoscroll_y > 1.0) { sd->down++; priv->autoscroll_y -= 1.0; @@ -2212,7 +2214,7 @@ HandleScrolling(SynapticsPrivate *priv, struct SynapticsHwState *hw, double dtime = (hw->millis - HIST(0).millis) / 1000.0; double ddx = para->coasting_friction * dtime; priv->autoscroll_x += priv->autoscroll_xspd * dtime; - delay = MIN(delay, 20); + delay = MIN(delay, POLL_MS); while (priv->autoscroll_x > 1.0) { sd->right++; priv->autoscroll_x -= 1.0; -- 1.7.5.3 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
