| Index: content/renderer/gpu/input_handler_proxy.cc
|
| diff --git a/content/renderer/gpu/input_handler_proxy.cc b/content/renderer/gpu/input_handler_proxy.cc
|
| index 77dd0f0af8472559f704120c5ad6618f4c2ec418..e81ebf0227d6d60a6fe218ce9676afc0ac0f9663 100644
|
| --- a/content/renderer/gpu/input_handler_proxy.cc
|
| +++ b/content/renderer/gpu/input_handler_proxy.cc
|
| @@ -60,6 +60,7 @@ InputHandlerProxy::InputHandlerProxy(cc::InputHandler* input_handler)
|
| expect_pinch_update_end_(false),
|
| #endif
|
| gesture_scroll_on_impl_thread_(false),
|
| + gesture_scroll_on_main_thread_(false),
|
| gesture_pinch_on_impl_thread_(false),
|
| fling_may_be_active_on_main_thread_(false),
|
| fling_overscrolled_horizontally_(false),
|
| @@ -150,6 +151,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent(
|
| gesture_scroll_on_impl_thread_ = true;
|
| return DID_HANDLE;
|
| case cc::InputHandler::ScrollOnMainThread:
|
| + gesture_scroll_on_main_thread_ = true;
|
| return DID_NOT_HANDLE;
|
| case cc::InputHandler::ScrollIgnored:
|
| return DROP_EVENT;
|
| @@ -159,9 +161,12 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent(
|
| DCHECK(expect_scroll_update_end_);
|
| #endif
|
|
|
| - if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_)
|
| + if (gesture_scroll_on_main_thread_)
|
| return DID_NOT_HANDLE;
|
|
|
| + if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_)
|
| + return DROP_EVENT;
|
| +
|
| const WebGestureEvent& gesture_event =
|
| *static_cast<const WebGestureEvent*>(&event);
|
| bool did_scroll = input_handler_->ScrollBy(
|
| @@ -176,8 +181,13 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent(
|
| #endif
|
| input_handler_->ScrollEnd();
|
|
|
| - if (!gesture_scroll_on_impl_thread_)
|
| + if (gesture_scroll_on_main_thread_) {
|
| + gesture_scroll_on_main_thread_ = false;
|
| return DID_NOT_HANDLE;
|
| + }
|
| +
|
| + if (!gesture_scroll_on_impl_thread_)
|
| + return DROP_EVENT;
|
|
|
| gesture_scroll_on_impl_thread_ = false;
|
| return DID_HANDLE;
|
| @@ -244,7 +254,7 @@ InputHandlerProxy::HandleGestureFling(
|
| gfx::Point(gesture_event.x, gesture_event.y),
|
| cc::InputHandler::NonBubblingGesture);
|
| } else {
|
| - if (!gesture_scroll_on_impl_thread_)
|
| + if (gesture_scroll_on_main_thread_)
|
| scroll_status = cc::InputHandler::ScrollOnMainThread;
|
| else
|
| scroll_status = input_handler_->FlingScrollBegin();
|
|
|