| Index: chrome/browser/renderer_host/render_widget_host_view_views.cc
|
| diff --git a/chrome/browser/renderer_host/render_widget_host_view_views.cc b/chrome/browser/renderer_host/render_widget_host_view_views.cc
|
| index 80804ad5b531c015aeb45955a65dcc86cdb923bc..d2e55fa744daa043edbbad10ac603658943afd13 100644
|
| --- a/chrome/browser/renderer_host/render_widget_host_view_views.cc
|
| +++ b/chrome/browser/renderer_host/render_widget_host_view_views.cc
|
| @@ -717,8 +717,16 @@ views::View::TouchStatus RenderWidgetHostViewViews::OnTouchEvent(
|
| status = TOUCH_STATUS_CONTINUE;
|
|
|
| // Update the location and state of the point.
|
| - UpdateTouchPointPosition(&e, GetPosition(), point);
|
| point->state = TouchPointStateFromEvent(&e);
|
| + if (point->state == WebKit::WebTouchPoint::StateMoved) {
|
| + // It is possible for badly written touch drivers to emit Move events even
|
| + // when the touch location hasn't changed. In such cases, consume the event
|
| + // and pretend nothing happened.
|
| + if (point->position.x == e.x() && point->position.y == e.y()) {
|
| + return status;
|
| + }
|
| + }
|
| + UpdateTouchPointPosition(&e, GetPosition(), point);
|
|
|
| // Mark the rest of the points as stationary.
|
| for (int i = 0; i < touch_event_.touchPointsLength; ++i) {
|
|
|