Index: content/renderer/render_thread_impl.cc |
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
index 9cb97a93dc9ad31f2c4019a1d457c49eb1862eed..03bbc6fb6f5e6af01a6a07e6d3e3c7a49bd484f9 100644 |
--- a/content/renderer/render_thread_impl.cc |
+++ b/content/renderer/render_thread_impl.cc |
@@ -1185,9 +1185,11 @@ void RenderThreadImpl::InitializeCompositorThread() { |
#if defined(OS_ANDROID) |
SynchronousCompositorFactory* sync_compositor_factory = |
SynchronousCompositorFactory::GetInstance(); |
+ const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
bool using_ipc_sync_compositing = |
- base::CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kIPCSyncCompositing); |
+ cmd_line->HasSwitch(switches::kIPCSyncCompositing); |
+ bool async_input_for_sync_compositing = |
+ cmd_line->HasSwitch(switches::kAsyncInputForSyncCompositor); |
DCHECK(!sync_compositor_factory || !using_ipc_sync_compositing); |
if (sync_compositor_factory) { |
@@ -1209,16 +1211,23 @@ void RenderThreadImpl::InitializeCompositorThread() { |
false)); |
} |
- InputHandlerManagerClient* input_handler_manager_client = NULL; |
+ InputHandlerManagerClient* input_handler_manager_client = nullptr; |
+ InputHandlerManagerSyncHandlerProxyClient* |
+ input_handler_manager_sync_handler_proxy_client = nullptr; |
#if defined(OS_ANDROID) |
if (using_ipc_sync_compositing) { |
sync_compositor_message_filter_ = |
new SynchronousCompositorFilter(compositor_task_runner_); |
AddFilter(sync_compositor_message_filter_.get()); |
- input_handler_manager_client = sync_compositor_message_filter_.get(); |
+ if (!async_input_for_sync_compositing) |
+ input_handler_manager_client = sync_compositor_message_filter_.get(); |
+ input_handler_manager_sync_handler_proxy_client = |
+ sync_compositor_message_filter_.get(); |
} else if (sync_compositor_factory) { |
input_handler_manager_client = |
sync_compositor_factory->GetInputHandlerManagerClient(); |
+ input_handler_manager_sync_handler_proxy_client = |
+ sync_compositor_factory->GetInputHandlerManagerSyncHandlerProxyClient(); |
} |
#endif |
if (!input_handler_manager_client) { |
@@ -1231,6 +1240,7 @@ void RenderThreadImpl::InitializeCompositorThread() { |
} |
input_handler_manager_.reset(new InputHandlerManager( |
compositor_task_runner_, input_handler_manager_client, |
+ input_handler_manager_sync_handler_proxy_client, |
renderer_scheduler_.get())); |
} |