diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-21 21:06:23 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-21 21:06:23 +0000 |
commit | 421d1cd06fb54c660e0f251df5a0d6403a214670 (patch) | |
tree | 174505a79267a4ac711bb20f4730f8c8f65f81ad /chrome/common/child_process.cc | |
parent | 830853df6093d39820366da09a18296097335d56 (diff) | |
download | chromium_src-421d1cd06fb54c660e0f251df5a0d6403a214670.zip chromium_src-421d1cd06fb54c660e0f251df5a0d6403a214670.tar.gz chromium_src-421d1cd06fb54c660e0f251df5a0d6403a214670.tar.bz2 |
Revert r21117 as it caused reliability failures.
Also included in this revert: r21165, r21180, and a couple valgrind suppression edits
TBR=huanr
Review URL: http://codereview.chromium.org/155876
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21216 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/child_process.cc')
-rw-r--r-- | chrome/common/child_process.cc | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/chrome/common/child_process.cc b/chrome/common/child_process.cc index b777ff2..f32708c 100644 --- a/chrome/common/child_process.cc +++ b/chrome/common/child_process.cc @@ -9,14 +9,14 @@ ChildProcess* ChildProcess::child_process_; -ChildProcess::ChildProcess() - : ref_count_(0), - shutdown_event_(true, false), - io_thread_("Chrome_ChildIOThread") { +ChildProcess::ChildProcess(ChildThread* child_thread) + : child_thread_(child_thread), + ref_count_(0), + shutdown_event_(true, false) { DCHECK(!child_process_); child_process_ = this; - - io_thread_.StartWithOptions(base::Thread::Options(MessageLoop::TYPE_IO, 0)); + if (child_thread_.get()) // null in unittests. + child_thread_->Run(); } ChildProcess::~ChildProcess() { @@ -28,25 +28,28 @@ ChildProcess::~ChildProcess() { // notice shutdown before the render process begins waiting for them to exit. shutdown_event_.Signal(); + if (child_thread_.get()) + child_thread_->Stop(); + child_process_ = NULL; } void ChildProcess::AddRefProcess() { - DCHECK(!main_thread_.get() || // null in unittests. - MessageLoop::current() == main_thread_->message_loop()); + DCHECK(!child_thread_.get() || // null in unittests. + MessageLoop::current() == child_thread_->message_loop()); ref_count_++; } void ChildProcess::ReleaseProcess() { - DCHECK(!main_thread_.get() || // null in unittests. - MessageLoop::current() == main_thread_->message_loop()); + DCHECK(!child_thread_.get() || // null in unittests. + MessageLoop::current() == child_thread_->message_loop()); DCHECK(ref_count_); DCHECK(child_process_); if (--ref_count_) return; - if (main_thread_.get()) // null in unittests. - main_thread_->OnProcessFinalRelease(); + if (child_thread_.get()) // null in unittests. + child_thread_->OnProcessFinalRelease(); } base::WaitableEvent* ChildProcess::GetShutDownEvent() { |