diff options
author | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-23 17:33:22 +0000 |
---|---|---|
committer | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-23 17:33:22 +0000 |
commit | 9291ed107d2031cea55f324431ffee8d7bae1416 (patch) | |
tree | 5c1d8e6d992aa324f099062b0f85e3945fdfe761 /chrome/common/child_process.cc | |
parent | fefa8b29191ffd7730f7d3428697408bf979e6ee (diff) | |
download | chromium_src-9291ed107d2031cea55f324431ffee8d7bae1416.zip chromium_src-9291ed107d2031cea55f324431ffee8d7bae1416.tar.gz chromium_src-9291ed107d2031cea55f324431ffee8d7bae1416.tar.bz2 |
Revert 21355 because it might be causing all the new
crashes on reliability. It also seems to be causing
valgrind error.
Original change:
Switch the first thread in a child process to be the main thread, and make theIO thread be the second thread. The change is needed for plugins on mac.
Review URL: http://codereview.chromium.org/159274
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21398 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/child_process.cc')
-rw-r--r-- | chrome/common/child_process.cc | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/chrome/common/child_process.cc b/chrome/common/child_process.cc index 34ea7a2..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,29 +28,28 @@ ChildProcess::~ChildProcess() { // notice shutdown before the render process begins waiting for them to exit. shutdown_event_.Signal(); - // Kill the main thread object before nulling child_process_, since - // destruction code might depend on it. - main_thread_.reset(); + 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() { |