Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Side by Side Diff: content/browser/browser_main_loop.cc

Issue 2096843002: mus+ash: Enable Chrome HW rendering in mus+ash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/browser_main_loop.h" 5 #include "content/browser/browser_main_loop.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 // data during shutdown, so the blocking pool needs to be available. There 1104 // data during shutdown, so the blocking pool needs to be available. There
1105 // may also be slow operations pending that will blcok shutdown, so closing 1105 // may also be slow operations pending that will blcok shutdown, so closing
1106 // it here (which will block until required operations are complete) gives 1106 // it here (which will block until required operations are complete) gives
1107 // more head start for those operations to finish. 1107 // more head start for those operations to finish.
1108 { 1108 {
1109 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:ThreadPool"); 1109 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:ThreadPool");
1110 BrowserThreadImpl::ShutdownThreadPool(); 1110 BrowserThreadImpl::ShutdownThreadPool();
1111 } 1111 }
1112 // Must happen after the IO thread is shutdown since this may be accessed from 1112 // Must happen after the IO thread is shutdown since this may be accessed from
1113 // it. 1113 // it.
1114 { 1114 if (!shell::ShellIsRemote()) {
1115 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GPUChannelFactory"); 1115 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GPUChannelFactory");
1116 if (BrowserGpuChannelHostFactory::instance()) 1116 if (BrowserGpuChannelHostFactory::instance())
1117 BrowserGpuChannelHostFactory::Terminate(); 1117 BrowserGpuChannelHostFactory::Terminate();
1118 } 1118 }
1119 1119
1120 // Must happen after the I/O thread is shutdown since this class lives on the 1120 // Must happen after the I/O thread is shutdown since this class lives on the
1121 // I/O thread and isn't threadsafe. 1121 // I/O thread and isn't threadsafe.
1122 { 1122 {
1123 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GamepadService"); 1123 TRACE_EVENT0("shutdown", "BrowserMainLoop::Subsystem:GamepadService");
1124 GamepadService::GetInstance()->Terminate(); 1124 GamepadService::GetInstance()->Terminate();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1168 MOJO_PROPERTY_TYPE_SYNC_CALL_ALLOWED, &sync_call_allowed); 1168 MOJO_PROPERTY_TYPE_SYNC_CALL_ALLOWED, &sync_call_allowed);
1169 DCHECK_EQ(MOJO_RESULT_OK, result); 1169 DCHECK_EQ(MOJO_RESULT_OK, result);
1170 1170
1171 mojo_ipc_support_.reset(new mojo::edk::ScopedIPCSupport( 1171 mojo_ipc_support_.reset(new mojo::edk::ScopedIPCSupport(
1172 BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO) 1172 BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO)
1173 ->task_runner())); 1173 ->task_runner()));
1174 1174
1175 mojo_shell_context_.reset(new MojoShellContext); 1175 mojo_shell_context_.reset(new MojoShellContext);
1176 if (shell::ShellIsRemote()) { 1176 if (shell::ShellIsRemote()) {
1177 #if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA) 1177 #if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA)
1178 base::CommandLine::ForCurrentProcess()->AppendSwitch(
1179 switches::kIsRunningInMash);
1178 // TODO(rockot): Remove the blocking wait for init. 1180 // TODO(rockot): Remove the blocking wait for init.
1179 // http://crbug.com/594852. 1181 // http://crbug.com/594852.
1180 auto connection = MojoShellConnection::GetForProcess(); 1182 auto connection = MojoShellConnection::GetForProcess();
1181 if (connection) { 1183 if (connection) {
1182 WaitForMojoShellInitialize(); 1184 WaitForMojoShellInitialize();
1183 ui::GpuService::Initialize(connection->GetConnector()); 1185 ui::GpuService::Initialize(connection->GetConnector());
1184 } 1186 }
1185 #endif 1187 #endif
1186 } 1188 }
1187 1189
(...skipping 20 matching lines...) Expand all
1208 bool always_uses_gpu = true; 1210 bool always_uses_gpu = true;
1209 bool established_gpu_channel = false; 1211 bool established_gpu_channel = false;
1210 #if defined(OS_ANDROID) 1212 #if defined(OS_ANDROID)
1211 // TODO(crbug.com/439322): This should be set to |true|. 1213 // TODO(crbug.com/439322): This should be set to |true|.
1212 established_gpu_channel = false; 1214 established_gpu_channel = false;
1213 always_uses_gpu = ShouldStartGpuProcessOnBrowserStartup(); 1215 always_uses_gpu = ShouldStartGpuProcessOnBrowserStartup();
1214 BrowserGpuChannelHostFactory::Initialize(established_gpu_channel); 1216 BrowserGpuChannelHostFactory::Initialize(established_gpu_channel);
1215 #elif defined(USE_AURA) || defined(OS_MACOSX) 1217 #elif defined(USE_AURA) || defined(OS_MACOSX)
1216 established_gpu_channel = true; 1218 established_gpu_channel = true;
1217 if (!GpuDataManagerImpl::GetInstance()->CanUseGpuBrowserCompositor() || 1219 if (!GpuDataManagerImpl::GetInstance()->CanUseGpuBrowserCompositor() ||
1218 parsed_command_line_.HasSwitch(switches::kDisableGpuEarlyInit)) { 1220 parsed_command_line_.HasSwitch(switches::kDisableGpuEarlyInit) ||
1221 shell::ShellIsRemote()) {
1219 established_gpu_channel = always_uses_gpu = false; 1222 established_gpu_channel = always_uses_gpu = false;
1220 } 1223 }
1221 BrowserGpuChannelHostFactory::Initialize(established_gpu_channel); 1224 BrowserGpuChannelHostFactory::Initialize(established_gpu_channel);
1222 ImageTransportFactory::Initialize(); 1225 ImageTransportFactory::Initialize();
1223 #if defined(USE_AURA) 1226 #if defined(USE_AURA)
1224 bool use_mus_in_renderer = false; 1227 bool use_mus_in_renderer = false;
1225 #if defined (MOJO_SHELL_CLIENT) 1228 #if defined (MOJO_SHELL_CLIENT)
1226 use_mus_in_renderer = base::CommandLine::ForCurrentProcess()->HasSwitch( 1229 use_mus_in_renderer = base::CommandLine::ForCurrentProcess()->HasSwitch(
1227 switches::kUseMusInRenderer); 1230 switches::kUseMusInRenderer);
1228 #endif // defined(MOJO_SHELL_CLIENT); 1231 #endif // defined(MOJO_SHELL_CLIENT);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 // On Windows, clipboards are also used on the FILE or IO threads. 1318 // On Windows, clipboards are also used on the FILE or IO threads.
1316 allowed_clipboard_threads.push_back(file_thread_->GetThreadId()); 1319 allowed_clipboard_threads.push_back(file_thread_->GetThreadId());
1317 allowed_clipboard_threads.push_back(io_thread_->GetThreadId()); 1320 allowed_clipboard_threads.push_back(io_thread_->GetThreadId());
1318 #endif 1321 #endif
1319 ui::Clipboard::SetAllowedThreads(allowed_clipboard_threads); 1322 ui::Clipboard::SetAllowedThreads(allowed_clipboard_threads);
1320 1323
1321 // When running the GPU thread in-process, avoid optimistically starting it 1324 // When running the GPU thread in-process, avoid optimistically starting it
1322 // since creating the GPU thread races against creation of the one-and-only 1325 // since creating the GPU thread races against creation of the one-and-only
1323 // ChildProcess instance which is created by the renderer thread. 1326 // ChildProcess instance which is created by the renderer thread.
1324 if (GpuDataManagerImpl::GetInstance()->GpuAccessAllowed(NULL) && 1327 if (GpuDataManagerImpl::GetInstance()->GpuAccessAllowed(NULL) &&
1325 !established_gpu_channel && 1328 !established_gpu_channel && always_uses_gpu && !UsingInProcessGpu() &&
1326 always_uses_gpu && 1329 !shell::ShellIsRemote()) {
1327 !UsingInProcessGpu()) {
1328 TRACE_EVENT_INSTANT0("gpu", "Post task to launch GPU process", 1330 TRACE_EVENT_INSTANT0("gpu", "Post task to launch GPU process",
1329 TRACE_EVENT_SCOPE_THREAD); 1331 TRACE_EVENT_SCOPE_THREAD);
1330 BrowserThread::PostTask( 1332 BrowserThread::PostTask(
1331 BrowserThread::IO, FROM_HERE, 1333 BrowserThread::IO, FROM_HERE,
1332 base::Bind(base::IgnoreResult(&GpuProcessHost::Get), 1334 base::Bind(base::IgnoreResult(&GpuProcessHost::Get),
1333 GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, 1335 GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED,
1334 CAUSE_FOR_GPU_LAUNCH_BROWSER_STARTUP)); 1336 CAUSE_FOR_GPU_LAUNCH_BROWSER_STARTUP));
1335 } 1337 }
1336 1338
1337 #if defined(OS_MACOSX) 1339 #if defined(OS_MACOSX)
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1517 std::move(worker_task_runner), 1519 std::move(worker_task_runner),
1518 MediaInternals::GetInstance()); 1520 MediaInternals::GetInstance());
1519 } 1521 }
1520 CHECK(audio_manager_); 1522 CHECK(audio_manager_);
1521 1523
1522 if (use_hang_monitor) 1524 if (use_hang_monitor)
1523 media::AudioManager::StartHangMonitor(io_thread_->task_runner()); 1525 media::AudioManager::StartHangMonitor(io_thread_->task_runner());
1524 } 1526 }
1525 1527
1526 } // namespace content 1528 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698