From a9a0e2c02bdd6e9dfdff523705e7afcb47e82adb Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Tue, 10 Aug 2010 14:40:08 +0100 Subject: Filter abs events by default in grail-gesture Also connect the timeout for press with the timeout of tapping. Signed-off-by: Henrik Rydberg --- src/grail-gestures.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/grail-gestures.c') diff --git a/src/grail-gestures.c b/src/grail-gestures.c index c743544..1d49765 100644 --- a/src/grail-gestures.c +++ b/src/grail-gestures.c @@ -25,6 +25,7 @@ static const float FM_SN[DIM_FM] = { 1000, 1000, 200, 1000 }; static const float FM_BAR[DIM_FM] = { 50, 50, 30, 50 }; +static const grail_time_t FM_BAR_MS[DIM_FM] = { 300, 300, 10000, 10000 }; static const grail_time_t SAMPLE_MS = 10; static const float EPS = 1e-5; @@ -105,6 +106,7 @@ static void move_reset(struct move_model *m, int i, float x, grail_time_t t) fm->velocity = 0; fm->value = x; fm->original = x; + fm->original_ms = t; fm->sample = x; fm->sample_ms = t; m->tickle &= ~(1 << i); @@ -130,7 +132,8 @@ static void move_update(struct move_model *m, int i, float x, grail_time_t t) if (m->active & (1 << i)) return; fm->action_delta = x - fm->original; - if (fabs(fm->action_delta) > fm->bar) + if (fabs(fm->action_delta) > fm->bar || + t - fm->original_ms > fm->bar_ms) m->active |= (1 << i); else fm->action_delta = 0; @@ -151,6 +154,7 @@ void gru_init_motion(struct grail *ge) for (i = 0; i < DIM_FM; i++) { m->fm[i].fuzz = D[i] / FM_SN[i]; m->fm[i].bar = D[i] / FM_BAR[i]; + m->fm[i].bar_ms = FM_BAR_MS[i]; } } -- cgit v1.2.3