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, |