| Index: ui/events/ozone/evdev/touch_noise/far_apart_taps_touch_noise_filter.cc
|
| diff --git a/ui/events/ozone/evdev/touch_noise/far_apart_taps_touch_noise_filter.cc b/ui/events/ozone/evdev/touch_noise/far_apart_taps_touch_noise_filter.cc
|
| deleted file mode 100644
|
| index a1f997f57caa48aad79fe6eb1d88fd985c940356..0000000000000000000000000000000000000000
|
| --- a/ui/events/ozone/evdev/touch_noise/far_apart_taps_touch_noise_filter.cc
|
| +++ /dev/null
|
| @@ -1,91 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "ui/events/ozone/evdev/touch_noise/far_apart_taps_touch_noise_filter.h"
|
| -
|
| -#include <cmath>
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/strings/stringprintf.h"
|
| -
|
| -namespace ui {
|
| -
|
| -namespace {
|
| -
|
| -// Minimum squared distance between taps to be considered far apart.
|
| -const int kMinDistance2 = 1500 * 1500;
|
| -
|
| -// Max time between taps considered.
|
| -const int kMaxTapDeltaMs = 30;
|
| -
|
| -// Maximum squared movement of a touch to still be considered a tap.
|
| -const int kMaxTapMovement2 = 20 * 20;
|
| -
|
| -// Returns the squared distance between (|x1|, |y1|) and (|x2|, |y2|).
|
| -int Distance2(int x1, int y1, int x2, int y2) {
|
| - int offset_x = x2 - x1;
|
| - int offset_y = y2 - y1;
|
| - return offset_x * offset_x + offset_y * offset_y;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -void FarApartTapsTouchNoiseFilter::Filter(
|
| - const std::vector<InProgressTouchEvdev>& touches,
|
| - base::TimeDelta time,
|
| - std::bitset<kNumTouchEvdevSlots>* slots_with_noise) {
|
| - // Remove old taps.
|
| - base::TimeDelta tap_cutoff =
|
| - time - base::TimeDelta::FromMilliseconds(kMaxTapDeltaMs);
|
| - for (size_t i = 0; i < arraysize(tracked_taps_); ++i) {
|
| - if (tracked_taps_[i].start < tap_cutoff)
|
| - tracked_taps_[i].Invalidate();
|
| - }
|
| -
|
| - for (const InProgressTouchEvdev& touch : touches) {
|
| - // Only look at slots with active touches.
|
| - if (!touch.touching && !touch.was_touching)
|
| - continue;
|
| -
|
| - size_t slot = touch.slot;
|
| - if (!touch.was_touching) {
|
| - // Track new finger info.
|
| - tracked_taps_[slot] = Tap(time, touch.x, touch.y);
|
| - } else if (tracked_taps_[slot].is_valid()) {
|
| - // Check if this finger has moved too far to be considered a tap.
|
| - if (kMaxTapMovement2 < Distance2(touch.x, touch.y, tracked_taps_[slot].x,
|
| - tracked_taps_[slot].y)) {
|
| - tracked_taps_[slot].Invalidate();
|
| - }
|
| - }
|
| -
|
| - if (tracked_taps_[slot].is_valid()) {
|
| - // Check distance from other tracked taps.
|
| - int min_distance2 = -1;
|
| - for (size_t i = 0; i < arraysize(tracked_taps_); ++i) {
|
| - if (i == slot || !tracked_taps_[i].is_valid())
|
| - continue;
|
| -
|
| - int dist2 =
|
| - Distance2(tracked_taps_[i].x, tracked_taps_[i].y, touch.x, touch.y);
|
| - if (min_distance2 < 0 || dist2 < min_distance2)
|
| - min_distance2 = dist2;
|
| - }
|
| -
|
| - if (min_distance2 > kMinDistance2) {
|
| - // The other finger should see this one on its next frame and also
|
| - // get canceled.
|
| - VLOG(2) << base::StringPrintf(
|
| - "Cancel tracking id %d %.0fpx from other current taps.",
|
| - touch.tracking_id, sqrt(min_distance2));
|
| - slots_with_noise->set(slot);
|
| - }
|
| - }
|
| -
|
| - if (!touch.touching)
|
| - tracked_taps_[slot].Invalidate();
|
| - }
|
| -}
|
| -
|
| -} // namespace ui
|
|
|