evdev: move the hysteresis code to a more generic location

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
This commit is contained in:
Peter Hutterer 2016-04-13 15:23:44 +10:00
parent 49b8d4ec44
commit df879a6c4f
2 changed files with 19 additions and 19 deletions

View file

@ -36,19 +36,6 @@
#define THUMB_MOVE_TIMEOUT ms2us(300) #define THUMB_MOVE_TIMEOUT ms2us(300)
#define FAKE_FINGER_OVERFLOW (1 << 7) #define FAKE_FINGER_OVERFLOW (1 << 7)
static inline int
tp_hysteresis(int in, int center, int margin)
{
int diff = in - center;
if (abs(diff) <= margin)
return center;
if (diff > margin)
return center + diff - margin;
else
return center + diff + margin;
}
static inline struct device_coords * static inline struct device_coords *
tp_motion_history_offset(struct tp_touch *t, int offset) tp_motion_history_offset(struct tp_touch *t, int offset)
{ {
@ -105,12 +92,12 @@ tp_motion_hysteresis(struct tp_dispatch *tp,
if (t->history.count == 0) { if (t->history.count == 0) {
t->hysteresis_center = t->point; t->hysteresis_center = t->point;
} else { } else {
x = tp_hysteresis(x, x = evdev_hysteresis(x,
t->hysteresis_center.x, t->hysteresis_center.x,
tp->hysteresis_margin.x); tp->hysteresis_margin.x);
y = tp_hysteresis(y, y = evdev_hysteresis(y,
t->hysteresis_center.y, t->hysteresis_center.y,
tp->hysteresis_margin.y); tp->hysteresis_margin.y);
t->hysteresis_center.x = x; t->hysteresis_center.x = x;
t->hysteresis_center.y = y; t->hysteresis_center.y = y;
t->point.x = x; t->point.x = x;

View file

@ -469,4 +469,17 @@ evdev_to_left_handed(struct evdev_device *device,
return button; return button;
} }
static inline int
evdev_hysteresis(int in, int center, int margin)
{
int diff = in - center;
if (abs(diff) <= margin)
return center;
if (diff > margin)
return center + diff - margin;
else
return center + diff + margin;
}
#endif /* EVDEV_H */ #endif /* EVDEV_H */