| Index: content/renderer/render_thread_impl.cc
|
| diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
|
| index 0845883e185e198d5d91837bd9fae4da9262772c..1dc6aa2480f694e1fc95b9b94823b894cd47084f 100644
|
| --- a/content/renderer/render_thread_impl.cc
|
| +++ b/content/renderer/render_thread_impl.cc
|
| @@ -454,6 +454,11 @@ scoped_refptr<ContextProviderCommandBuffer> CreateOffscreenContext(
|
| automatic_flushes, support_locking, limits, attributes, nullptr, type));
|
| }
|
|
|
| +bool IsRunningInMash() {
|
| + const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess();
|
| + return cmdline->HasSwitch(switches::kIsRunningInMash);
|
| +}
|
| +
|
| } // namespace
|
|
|
| // For measuring memory usage after each task. Behind a command line flag.
|
| @@ -641,6 +646,13 @@ void RenderThreadImpl::Init(
|
| // Register this object as the main thread.
|
| ChildProcess::current()->set_main_thread(this);
|
|
|
| +#if defined(MOJO_SHELL_CLIENT)
|
| + if (IsRunningInMash()) {
|
| + auto* shell_connection = ChildThread::Get()->GetMojoShellConnection();
|
| + ui::GpuService::Initialize(shell_connection->GetConnector());
|
| + }
|
| +#endif
|
| +
|
| InitializeWebKit(resource_task_queue);
|
|
|
| // In single process the single process is all there is.
|
| @@ -667,7 +679,7 @@ void RenderThreadImpl::Init(
|
| kMaxResourceRequestsPerFlushWhenThrottled));
|
| resource_dispatcher()->set_message_sender(resource_dispatch_throttler_.get());
|
|
|
| - media_stream_center_ = NULL;
|
| + media_stream_center_ = nullptr;
|
|
|
| blob_message_filter_ = new BlobMessageFilter(GetFileThreadMessageLoopProxy());
|
| AddFilter(blob_message_filter_.get());
|
| @@ -877,11 +889,11 @@ void RenderThreadImpl::Shutdown() {
|
| // Shutdown in reverse of the initialization order.
|
| if (devtools_agent_message_filter_.get()) {
|
| RemoveFilter(devtools_agent_message_filter_.get());
|
| - devtools_agent_message_filter_ = NULL;
|
| + devtools_agent_message_filter_ = nullptr;
|
| }
|
|
|
| RemoveFilter(audio_input_message_filter_.get());
|
| - audio_input_message_filter_ = NULL;
|
| + audio_input_message_filter_ = nullptr;
|
|
|
| #if defined(ENABLE_WEBRTC)
|
| RTCPeerConnectionHandler::DestructAllHandlers();
|
| @@ -895,7 +907,7 @@ void RenderThreadImpl::Shutdown() {
|
| vc_manager_.reset();
|
|
|
| RemoveFilter(db_message_filter_.get());
|
| - db_message_filter_ = NULL;
|
| + db_message_filter_ = nullptr;
|
|
|
| // Shutdown the file thread if it's running.
|
| if (file_thread_)
|
| @@ -903,7 +915,7 @@ void RenderThreadImpl::Shutdown() {
|
|
|
| if (compositor_message_filter_.get()) {
|
| RemoveFilter(compositor_message_filter_.get());
|
| - compositor_message_filter_ = NULL;
|
| + compositor_message_filter_ = nullptr;
|
| }
|
|
|
| #if defined(OS_ANDROID)
|
| @@ -922,7 +934,7 @@ void RenderThreadImpl::Shutdown() {
|
|
|
| // AudioMessageFilter may be accessed on |media_thread_|, so shutdown after.
|
| RemoveFilter(audio_message_filter_.get());
|
| - audio_message_filter_ = NULL;
|
| + audio_message_filter_ = nullptr;
|
|
|
| categorized_worker_pool_->Shutdown();
|
|
|
| @@ -930,7 +942,7 @@ void RenderThreadImpl::Shutdown() {
|
| input_handler_manager_.reset();
|
| if (input_event_filter_.get()) {
|
| RemoveFilter(input_event_filter_.get());
|
| - input_event_filter_ = NULL;
|
| + input_event_filter_ = nullptr;
|
| }
|
|
|
| // RemoveEmbeddedWorkerRoute may be called while deleting
|
| @@ -942,7 +954,7 @@ void RenderThreadImpl::Shutdown() {
|
| // hold pointers to V8 objects (e.g., via pending requests).
|
| main_thread_indexed_db_dispatcher_.reset();
|
|
|
| - main_thread_compositor_task_runner_ = NULL;
|
| + main_thread_compositor_task_runner_ = nullptr;
|
|
|
| gpu_factories_.clear();
|
|
|
| @@ -981,7 +993,7 @@ void RenderThreadImpl::Shutdown() {
|
| // to the browser process.
|
| main_message_loop_.reset();
|
|
|
| - lazy_tls.Pointer()->Set(NULL);
|
| + lazy_tls.Pointer()->Set(nullptr);
|
| }
|
|
|
| bool RenderThreadImpl::Send(IPC::Message* msg) {
|
| @@ -1504,8 +1516,8 @@ scoped_refptr<StreamTextureFactory> RenderThreadImpl::GetStreamTexureFactory() {
|
| scoped_refptr<ContextProviderCommandBuffer> shared_context_provider =
|
| SharedMainThreadContextProvider();
|
| if (!shared_context_provider) {
|
| - stream_texture_factory_ = NULL;
|
| - return NULL;
|
| + stream_texture_factory_ = nullptr;
|
| + return nullptr;
|
| }
|
| DCHECK(shared_context_provider->GetCommandBufferProxy());
|
| DCHECK(shared_context_provider->GetCommandBufferProxy()->channel());
|
| @@ -1672,7 +1684,7 @@ void RenderThreadImpl::OnChannelError() {
|
| bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) {
|
| base::ObserverListBase<RenderThreadObserver>::Iterator it(&observers_);
|
| RenderThreadObserver* observer;
|
| - while ((observer = it.GetNext()) != NULL) {
|
| + while ((observer = it.GetNext()) != nullptr) {
|
| if (observer->OnControlMessageReceived(msg))
|
| return true;
|
| }
|
| @@ -1778,32 +1790,40 @@ scoped_refptr<gpu::GpuChannelHost> RenderThreadImpl::EstablishGpuChannelSync(
|
|
|
| // Recreate the channel if it has been lost.
|
| gpu_channel_->DestroyChannel();
|
| - gpu_channel_ = NULL;
|
| + gpu_channel_ = nullptr;
|
| }
|
|
|
| - // Ask the browser for the channel name.
|
| - int client_id = 0;
|
| - IPC::ChannelHandle channel_handle;
|
| - gpu::GPUInfo gpu_info;
|
| - if (!Send(new ChildProcessHostMsg_EstablishGpuChannel(
|
| - cause_for_gpu_launch, &client_id, &channel_handle, &gpu_info)) ||
|
| + if (!IsRunningInMash()) {
|
| + int client_id = 0;
|
| + IPC::ChannelHandle channel_handle;
|
| + gpu::GPUInfo gpu_info;
|
| + // Ask the browser for the channel name.
|
| + if (!Send(new ChildProcessHostMsg_EstablishGpuChannel(
|
| + cause_for_gpu_launch, &client_id, &channel_handle, &gpu_info)) ||
|
| #if defined(OS_POSIX)
|
| - channel_handle.socket.fd == -1 ||
|
| + channel_handle.socket.fd == -1 ||
|
| #endif
|
| - channel_handle.name.empty()) {
|
| - // Otherwise cancel the connection.
|
| - return NULL;
|
| - }
|
| -
|
| - GetContentClient()->SetGpuInfo(gpu_info);
|
| + channel_handle.name.empty()) {
|
| + // Otherwise cancel the connection.
|
| + return nullptr;
|
| + }
|
| + GetContentClient()->SetGpuInfo(gpu_info);
|
|
|
| - // Cache some variables that are needed on the compositor thread for our
|
| - // implementation of GpuChannelHostFactory.
|
| - io_thread_task_runner_ = ChildProcess::current()->io_task_runner();
|
| + // Cache some variables that are needed on the compositor thread for our
|
| + // implementation of GpuChannelHostFactory.
|
| + io_thread_task_runner_ = ChildProcess::current()->io_task_runner();
|
|
|
| - gpu_channel_ = gpu::GpuChannelHost::Create(
|
| - this, client_id, gpu_info, channel_handle,
|
| - ChildProcess::current()->GetShutDownEvent(), gpu_memory_buffer_manager());
|
| + gpu_channel_ =
|
| + gpu::GpuChannelHost::Create(this, client_id, gpu_info, channel_handle,
|
| + ChildProcess::current()->GetShutDownEvent(),
|
| + gpu_memory_buffer_manager());
|
| + } else {
|
| +#if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA)
|
| + gpu_channel_ = ui::GpuService::GetInstance()->EstablishGpuChannelSync();
|
| +#else
|
| + NOTREACHED();
|
| +#endif
|
| + }
|
| return gpu_channel_;
|
| }
|
|
|
| @@ -1819,10 +1839,9 @@ RenderThreadImpl::CreateCompositorOutputSurface(
|
| use_software = true;
|
|
|
| #if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA)
|
| - auto shell_connection = MojoShellConnection::GetForProcess();
|
| + auto* shell_connection = MojoShellConnection::GetForProcess();
|
| if (shell_connection && !use_software &&
|
| command_line.HasSwitch(switches::kUseMusInRenderer)) {
|
| - ui::GpuService::Initialize(shell_connection->GetConnector());
|
| RenderWidgetMusConnection* connection =
|
| RenderWidgetMusConnection::GetOrCreate(routing_id);
|
| return connection->CreateOutputSurface();
|
|
|