diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-12 01:55:13 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-12 01:55:13 +0000 |
commit | 4566f13fe843c0821dbce19d7ea5e8aece8afe4a (patch) | |
tree | 586c6006431604f6b159daca30fcdfe4913ad996 /chrome/browser/renderer_host/render_process_host.cc | |
parent | 3f366001f70b1ef4b8884796970cefb0769c469f (diff) | |
download | chromium_src-4566f13fe843c0821dbce19d7ea5e8aece8afe4a.zip chromium_src-4566f13fe843c0821dbce19d7ea5e8aece8afe4a.tar.gz chromium_src-4566f13fe843c0821dbce19d7ea5e8aece8afe4a.tar.bz2 |
Stop having renderers use both pids and a monotonically increasing "host_id". This allows ResourceDispatcher to be used by child processes other than renderers. I've done minor related cleanup on the way to make the code simpler.
Review URL: http://codereview.chromium.org/42054
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11509 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host/render_process_host.cc')
-rw-r--r-- | chrome/browser/renderer_host/render_process_host.cc | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/chrome/browser/renderer_host/render_process_host.cc b/chrome/browser/renderer_host/render_process_host.cc index ad44ac8..8cafe1e 100644 --- a/chrome/browser/renderer_host/render_process_host.cc +++ b/chrome/browser/renderer_host/render_process_host.cc @@ -52,8 +52,6 @@ unsigned int GetMaxRendererProcessCount() { // Returns true if the given host is suitable for launching a new view // associated with the given profile. -// TODO(jabdelmalek): do we want to avoid processes with hung renderers -// or with a large memory consumption? static bool IsSuitableHost(Profile* profile, RenderProcessHost* host) { return host->profile() == profile; } @@ -68,8 +66,8 @@ bool RenderProcessHost::run_renderer_in_process_ = false; RenderProcessHost::RenderProcessHost(Profile* profile) : max_page_id_(-1), notified_termination_(false), + pid_(-1), profile_(profile) { - host_id_ = all_hosts.Add(this); } RenderProcessHost::~RenderProcessHost() { @@ -97,7 +95,10 @@ void RenderProcessHost::Release(int listener_id) { Details<bool>(&close_expected)); notified_termination_ = true; } - Unregister(); + if (pid_ >= 0) { + all_hosts.Remove(pid_); + pid_ = -1; + } MessageLoop::current()->DeleteSoon(FROM_HERE, this); } } @@ -167,9 +168,12 @@ RenderProcessHost* RenderProcessHost::GetExistingProcessHost(Profile* profile) { return NULL; } -void RenderProcessHost::Unregister() { - if (host_id_ >= 0) { - all_hosts.Remove(host_id_); - host_id_ = -1; +void RenderProcessHost::SetProcessID(int pid) { + if (pid_ != -1) { + // This object is being reused after a renderer crash. Remove the old pid. + all_hosts.Remove(pid_); } + + pid_ = pid; + all_hosts.AddWithID(this, pid); } |