summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-05 23:49:41 +0000
committernsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-05 23:49:41 +0000
commit51b92168798b420f66cc4282a0b2b50953699c08 (patch)
tree3268095c2dbd88ebd499397d3fec5bf82147680e
parentf891e5388898119f35cf9a91647e25aec693e088 (diff)
downloadchromium_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.cc16
-rw-r--r--chrome/browser/renderer_host/browser_render_process_host.h4
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);
};