Index: content/renderer/input/main_thread_event_queue.cc |
diff --git a/content/renderer/input/main_thread_event_queue.cc b/content/renderer/input/main_thread_event_queue.cc |
index 243bc4fe9508b0386899b6c22929c0e8ebfda206..b4c9d82700089e08d6431021dcb47338cb66ca05 100644 |
--- a/content/renderer/input/main_thread_event_queue.cc |
+++ b/content/renderer/input/main_thread_event_queue.cc |
@@ -98,21 +98,38 @@ bool MainThreadEventQueue::HandleEvent( |
return non_blocking; |
} |
-void MainThreadEventQueue::EventHandled(blink::WebInputEvent::Type type) { |
+void MainThreadEventQueue::EventHandled(blink::WebInputEvent::Type type, |
+ InputEventAckState ack_result) { |
if (type == blink::WebInputEvent::MouseWheel) { |
+ if (in_flight_wheel_event_) { |
+ // Send acks for blocking wheel events. |
+ for (const auto id : in_flight_wheel_event_->eventsToAck) |
tdresser
2016/06/28 14:04:49
eventsToAck is just a list of zeroes, which is pre
dtapuska
2016/06/28 17:30:21
Changed to be a dcheck.
|
+ client_->SendInputEventAck(routing_id_, type, ack_result, id); |
+ } |
+ |
if (!wheel_events_.empty()) { |
- std::unique_ptr<PendingMouseWheelEvent> event = wheel_events_.Pop(); |
- client_->SendEventToMainThread(routing_id_, &event->event, event->latency, |
- event->type); |
+ in_flight_wheel_event_ = wheel_events_.Pop(); |
+ client_->SendEventToMainThread( |
+ routing_id_, &in_flight_wheel_event_->event, |
+ in_flight_wheel_event_->latency, in_flight_wheel_event_->type); |
} else { |
+ in_flight_wheel_event_.reset(); |
wheel_events_.set_state(WebInputEventQueueState::ITEM_NOT_PENDING); |
} |
} else if (blink::WebInputEvent::isTouchEventType(type)) { |
+ if (in_flight_touch_event_) { |
+ // Send acks for blocking touch events. |
+ for (const auto id : in_flight_touch_event_->eventsToAck) |
+ client_->SendInputEventAck(routing_id_, type, ack_result, id); |
+ } |
+ |
if (!touch_events_.empty()) { |
- std::unique_ptr<PendingTouchEvent> event = touch_events_.Pop(); |
- client_->SendEventToMainThread(routing_id_, &event->event, event->latency, |
- event->type); |
+ in_flight_touch_event_ = touch_events_.Pop(); |
+ client_->SendEventToMainThread( |
+ routing_id_, &in_flight_touch_event_->event, |
+ in_flight_touch_event_->latency, in_flight_touch_event_->type); |
} else { |
+ in_flight_touch_event_.reset(); |
touch_events_.set_state(WebInputEventQueueState::ITEM_NOT_PENDING); |
} |
} else { |