smoother
smoother_t *smoother;
smoother = &sc->smoother[0];
smoother = &sc->smoother[i];
queue_len = smoother->queue_len + 1;
start_x = smoother->start_x;
start_y = smoother->start_y;
dx = abs(smoother->queue[smoother->queue_cursor].x -
smoother->start_x);
dy = abs(smoother->queue[smoother->queue_cursor].y -
smoother->start_y);
smoother->queue_len));
smoother->queue_len >= sc->syninfo.tap_min_queue) {
smoother_t *smoother = &sc->smoother[smoother_id];
if (smoother->active == 0) {
smoother->start_x = x0;
smoother->start_y = y0;
smoother->queue_cursor = SYNAPTICS_PACKETQUEUE;
smoother->queue_len = 0;
smoother->avg_dx = 0;
smoother->avg_dy = 0;
smoother->squelch_x = 0;
smoother->squelch_y = 0;
smoother->active = 1;
cursor = smoother->queue_cursor;
dx = x0 - smoother->queue[cursor].x;
dy = y0 - smoother->queue[cursor].y;
cursor = SYNAPTICS_QUEUE_CURSOR(smoother->queue_cursor - 1);
smoother->queue[cursor].x = x0;
smoother->queue[cursor].y = y0;
smoother->queue_cursor = cursor;
if (smoother->queue_len < SYNAPTICS_PACKETQUEUE)
smoother->queue_len++;
if (smoother->queue_len < gest->window_min)
window = imin(smoother->queue_len, window_max);
dxp = abs(x0 - smoother->queue[peer].x) + 1;
dyp = abs(y0 - smoother->queue[peer].y) + 1;
smoother->avg_dx =
weight_prev_x * smoother->avg_dx) /
smoother->avg_dy =
weight_prev_y * smoother->avg_dy) /
smoother->avg_dx / multiplicator,
smoother->avg_dy / multiplicator));
smoother->squelch_x += smoother->avg_dx;
dxp = smoother->squelch_x / (div_x * multiplicator);
smoother->squelch_x = smoother->squelch_x %
smoother->squelch_y += smoother->avg_dy;
dyp = smoother->squelch_y / (div_y * multiplicator);
smoother->squelch_y = smoother->squelch_y %
if (is_fuzzy == smoother->is_fuzzy) {
smoother->is_fuzzy = is_fuzzy;
smoother->active = 0;
smoother_t smoother[PSM_FINGERS]; /* Motion smoothing */