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

Unified Diff: content/browser/gpu/gpu_process_host.cc

Issue 23235002: Set up content in-process main threads via factory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ios Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/gpu/gpu_process_host.h ('k') | content/browser/renderer_host/DEPS » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/gpu/gpu_process_host.cc
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
index 8cbb7aa1d82982cb163c286a63874e84527af708..7839ea7824cf2d335ed1c1bc93f5b42e3d1a379f 100644
--- a/content/browser/gpu/gpu_process_host.cc
+++ b/content/browser/gpu/gpu_process_host.cc
@@ -278,43 +278,6 @@ class GpuSandboxedProcessLauncherDelegate
} // anonymous namespace
-// Single process not supported in multiple dll mode currently.
-#if !defined(CHROME_MULTIPLE_DLL)
-// This class creates a GPU thread (instead of a GPU process), when running
-// with --in-process-gpu or --single-process.
-class GpuMainThread : public base::Thread {
- public:
- explicit GpuMainThread(const std::string& channel_id)
- : base::Thread("Chrome_InProcGpuThread"),
- channel_id_(channel_id),
- gpu_process_(NULL) {
- }
-
- virtual ~GpuMainThread() {
- Stop();
- }
-
- protected:
- virtual void Init() OVERRIDE {
- gpu_process_ = new GpuProcess();
- // The process object takes ownership of the thread object, so do not
- // save and delete the pointer.
- gpu_process_->set_main_thread(new GpuChildThread(channel_id_));
- }
-
- virtual void CleanUp() OVERRIDE {
- delete gpu_process_;
- }
-
- private:
- std::string channel_id_;
- // Deleted in CleanUp() on the gpu thread, so don't use smart pointers.
- GpuProcess* gpu_process_;
-
- DISALLOW_COPY_AND_ASSIGN(GpuMainThread);
-};
-#endif // !CHROME_MULTIPLE_DLL
-
// static
bool GpuProcessHost::ValidateHost(GpuProcessHost* host) {
if (!host)
@@ -401,6 +364,13 @@ void GpuProcessHost::SendOnIO(GpuProcessKind kind,
}
}
+GpuMainThreadFactoryFunction g_gpu_main_thread_factory = NULL;
+
+void GpuProcessHost::RegisterGpuMainThreadFactory(
+ GpuMainThreadFactoryFunction create) {
+ g_gpu_main_thread_factory = create;
+}
+
// static
GpuProcessHost* GpuProcessHost::FromID(int host_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
@@ -598,19 +568,15 @@ bool GpuProcessHost::Init() {
if (channel_id.empty())
return false;
- // Single process not supported in multiple dll mode currently.
-#if !defined(CHROME_MULTIPLE_DLL)
- if (in_process_) {
+ if (in_process_ && g_gpu_main_thread_factory) {
CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kDisableGpuWatchdog);
- in_process_gpu_thread_.reset(new GpuMainThread(channel_id));
+ in_process_gpu_thread_.reset(g_gpu_main_thread_factory(channel_id));
in_process_gpu_thread_->Start();
OnProcessLaunched(); // Fake a callback that the process is ready.
- } else
-#endif // !CHROME_MULTIPLE_DLL
- if (!LaunchGpuProcess(channel_id)) {
+ } else if (!LaunchGpuProcess(channel_id)) {
return false;
}
« no previous file with comments | « content/browser/gpu/gpu_process_host.h ('k') | content/browser/renderer_host/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698