Chromium Code Reviews| Index: content/renderer/input/input_event_filter.cc |
| diff --git a/content/renderer/input/input_event_filter.cc b/content/renderer/input/input_event_filter.cc |
| index 7f7b09fa6c3f5ff2f696153df29996a5ff82dc0c..12df1150be08e41efe8e2e6b875b6a3f11d81e8b 100644 |
| --- a/content/renderer/input/input_event_filter.cc |
| +++ b/content/renderer/input/input_event_filter.cc |
| @@ -72,7 +72,8 @@ void InputEventFilter::SetIsFlingingInMainThreadEventQueue(int routing_id, |
| void InputEventFilter::RegisterRoutingID(int routing_id) { |
| base::AutoLock locked(routes_lock_); |
| routes_.insert(routing_id); |
| - route_queues_[routing_id].reset(new MainThreadEventQueue(routing_id, this)); |
| + route_queues_[routing_id] = |
| + new MainThreadEventQueue(routing_id, this, main_task_runner_); |
| } |
| void InputEventFilter::UnregisterRoutingID(int routing_id) { |
| @@ -104,12 +105,17 @@ void InputEventFilter::DidStopFlinging(int routing_id) { |
| void InputEventFilter::NotifyInputEventHandled(int routing_id, |
| blink::WebInputEvent::Type type, |
| InputEventAckState ack_result) { |
| - DCHECK(target_task_runner_->BelongsToCurrentThread()); |
| - RouteQueueMap::iterator iter = route_queues_.find(routing_id); |
| - if (iter == route_queues_.end() || !iter->second) |
| - return; |
| + DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| + scoped_refptr<MainThreadEventQueue> queue; |
| + { |
| + base::AutoLock locked(routes_lock_); |
| + RouteQueueMap::iterator iter = route_queues_.find(routing_id); |
| + if (iter == route_queues_.end() || !iter->second) |
| + return; |
| + queue = iter->second; |
| + } |
| - iter->second->EventHandled(type, ack_result); |
| + queue->EventHandled(type, ack_result); |
|
tdresser
2016/07/20 20:52:27
Does the queue really need to be refptr?
dtapuska
2016/07/27 05:29:00
yes for thread safety.
|
| } |
| void InputEventFilter::OnFilterAdded(IPC::Sender* sender) { |
| @@ -230,17 +236,16 @@ void InputEventFilter::SendMessageOnIOThread( |
| sender_->Send(message.release()); |
| } |
| -void InputEventFilter::SendEventToMainThread( |
| +void InputEventFilter::HandleEventOnMainThread( |
| int routing_id, |
| const blink::WebInputEvent* event, |
| const ui::LatencyInfo& latency_info, |
| InputEventDispatchType dispatch_type) { |
| - TRACE_EVENT_INSTANT0( |
| - "input", "InputEventFilter::ForwardToHandler::SendEventToMainThread", |
| - TRACE_EVENT_SCOPE_THREAD); |
| + TRACE_EVENT_INSTANT0("input", "InputEventFilter::HandlEventOnMainThread", |
| + TRACE_EVENT_SCOPE_THREAD); |
|
tdresser
2016/07/20 20:52:27
This rename could potentially break some telemetry
dtapuska
2016/07/27 05:29:00
I grepped catapult and didn't see any use of the s
|
| IPC::Message new_msg = |
| InputMsg_HandleInputEvent(routing_id, event, latency_info, dispatch_type); |
| - main_task_runner_->PostTask(FROM_HERE, base::Bind(main_listener_, new_msg)); |
| + main_listener_.Run(new_msg); |
| } |
| void InputEventFilter::SendInputEventAck(int routing_id, |