Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1749)

Unified Diff: ui/events/ozone/evdev/touch_event_converter_evdev.cc

Issue 991533002: Port Chromium OS touch noise filtering to Chromium (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/events/ozone/evdev/touch_event_converter_evdev.cc
diff --git a/ui/events/ozone/evdev/touch_event_converter_evdev.cc b/ui/events/ozone/evdev/touch_event_converter_evdev.cc
index 3aaaa315ba28df765aca924afa6efc9d139e583e..996e68ce5ef5530fcea47d84cbeb38da46e797fd 100644
--- a/ui/events/ozone/evdev/touch_event_converter_evdev.cc
+++ b/ui/events/ozone/evdev/touch_event_converter_evdev.cc
@@ -29,6 +29,7 @@
#include "ui/events/event_constants.h"
#include "ui/events/event_switches.h"
#include "ui/events/ozone/evdev/device_event_dispatcher_evdev.h"
+#include "ui/events/ozone/evdev/touch_noise/touch_noise_remover.h"
namespace {
@@ -83,6 +84,10 @@ TouchEventConverterEvdev::TouchEventConverterEvdev(
is_type_a_(false),
touch_points_(0),
current_slot_(0) {
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kExtraTouchNoiseFiltering)) {
+ touch_noise_remover_.reset(new TouchNoiseRemover);
+ }
}
TouchEventConverterEvdev::~TouchEventConverterEvdev() {
@@ -276,19 +281,16 @@ void TouchEventConverterEvdev::ProcessSyn(const input_event& input) {
}
}
-void TouchEventConverterEvdev::ReportEvent(int touch_id,
- const InProgressEvents& event,
- const base::TimeDelta& timestamp) {
- dispatcher_->DispatchTouchEvent(TouchEventParams(
- id_, touch_id, event.type_, gfx::PointF(event.x_, event.y_),
- gfx::Vector2dF(event.radius_x_, event.radius_y_), event.pressure_,
- timestamp));
-}
-
void TouchEventConverterEvdev::ReportEvents(base::TimeDelta delta) {
+ std::vector<TouchEventParams> to_dispatch;
flackr 2015/03/10 05:23:40 If I understand correctly, we construct and copy c
pkotwicz 2015/03/13 03:53:16 I have refactored this as you requested
flackr 2015/03/13 15:08:35 Thanks!
for (size_t i = 0; i < events_.size(); i++) {
if (events_[i].altered_) {
- ReportEvent(i, events_[i], delta);
+ const InProgressEvents& event = events_[i];
+ to_dispatch.push_back(
+ TouchEventParams(id_, i, event.finger_, event.type_,
+ gfx::PointF(event.x_, event.y_),
+ gfx::Vector2dF(event.radius_x_, event.radius_y_),
+ event.pressure_, delta));
// Subsequent events for this finger will be touch-move until it
// is released.
@@ -296,6 +298,12 @@ void TouchEventConverterEvdev::ReportEvents(base::TimeDelta delta) {
events_[i].altered_ = false;
}
}
+
+ if (touch_noise_remover_)
+ touch_noise_remover_->RemoveNoise(&to_dispatch, delta);
flackr 2015/03/10 05:23:39 Can't just remove updates for noisy touches and no
pkotwicz 2015/03/13 03:53:16 I have changed the code to dispatch ET_TOUCH_CANCE
flackr 2015/03/13 15:08:35 Thanks. That's very strange that we used to keep t
+
+ for (const TouchEventParams& params : to_dispatch)
+ dispatcher_->DispatchTouchEvent(params);
}
} // namespace ui

Powered by Google App Engine
This is Rietveld 408576698