diff options
author | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-05 23:49:41 +0000 |
---|---|---|
committer | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-05 23:49:41 +0000 |
commit | 51b92168798b420f66cc4282a0b2b50953699c08 (patch) | |
tree | 3268095c2dbd88ebd499397d3fec5bf82147680e | |
parent | f891e5388898119f35cf9a91647e25aec693e088 (diff) | |
download | chromium_src-51b92168798b420f66cc4282a0b2b50953699c08.zip chromium_src-51b92168798b420f66cc4282a0b2b50953699c08.tar.gz chromium_src-51b92168798b420f66cc4282a0b2b50953699c08.tar.bz2 |
Revert 11048 because it caused crashes in the ui_tests single process.
Review URL: http://codereview.chromium.org/39231
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11058 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/renderer_host/browser_render_process_host.cc | 16 | ||||
-rw-r--r-- | chrome/browser/renderer_host/browser_render_process_host.h | 4 |
2 files changed, 14 insertions, 6 deletions
diff --git a/chrome/browser/renderer_host/browser_render_process_host.cc b/chrome/browser/renderer_host/browser_render_process_host.cc index ad8997e..2610dba 100644 --- a/chrome/browser/renderer_host/browser_render_process_host.cc +++ b/chrome/browser/renderer_host/browser_render_process_host.cc @@ -67,6 +67,10 @@ #include "skia/include/SkBitmap.h" +namespace { + +// ---------------------------------------------------------------------------- + // This class creates the IO thread for the renderer when running in // single-process mode. It's not used in multi-process mode. class RendererMainThread : public base::Thread { @@ -117,6 +121,10 @@ bool GetRendererPath(std::wstring* cmd_line) { const wchar_t* const kDesktopName = L"ChromeRendererDesktop"; +} // namespace + +//------------------------------------------------------------------------------ + // static void BrowserRenderProcessHost::RegisterPrefs(PrefService* prefs) { prefs->RegisterBooleanPref(prefs::kStartRenderersManually, false); @@ -338,11 +346,15 @@ bool BrowserRenderProcessHost::Init() { // communicating IO. This can lead to deadlocks where the RenderThread is // waiting for the IO to complete, while the browsermain is trying to pass // an event to the RenderThread. - in_process_renderer_.reset(new RendererMainThread(channel_id)); + RendererMainThread* render_thread = new RendererMainThread(channel_id); + + // This singleton keeps track of our pointers to avoid a leak. + Singleton<std::vector<linked_ptr<RendererMainThread> > >::get()->push_back( + linked_ptr<RendererMainThread>(render_thread)); base::Thread::Options options; options.message_loop_type = MessageLoop::TYPE_IO; - in_process_renderer_->StartWithOptions(options); + render_thread->StartWithOptions(options); } else { if (g_browser_process->local_state() && g_browser_process->local_state()->GetBoolean( diff --git a/chrome/browser/renderer_host/browser_render_process_host.h b/chrome/browser/renderer_host/browser_render_process_host.h index 62a7dc6..03dfc43 100644 --- a/chrome/browser/renderer_host/browser_render_process_host.h +++ b/chrome/browser/renderer_host/browser_render_process_host.h @@ -24,7 +24,6 @@ class CommandLine; class GURL; class PrefService; -class RendererMainThread; class RenderWidgetHelper; class WebContents; @@ -160,9 +159,6 @@ class BrowserRenderProcessHost : public RenderProcessHost, // This is used to clear our cache five seconds after the last use. base::DelayTimer<BrowserRenderProcessHost> cached_dibs_cleaner_; - // Used in single-process mode. - scoped_ptr<RendererMainThread> in_process_renderer_; - DISALLOW_COPY_AND_ASSIGN(BrowserRenderProcessHost); }; |