Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Side by Side Diff: content/child/child_process.cc

Issue 2309153002: Remove RenderThreadImpl::Shutdown (Closed)
Patch Set: temp Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/child/child_process.h" 5 #include "content/child/child_process.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 60
61 ChildProcess::~ChildProcess() { 61 ChildProcess::~ChildProcess() {
62 DCHECK(g_lazy_tls.Pointer()->Get() == this); 62 DCHECK(g_lazy_tls.Pointer()->Get() == this);
63 63
64 // Signal this event before destroying the child process. That way all 64 // Signal this event before destroying the child process. That way all
65 // background threads can cleanup. 65 // background threads can cleanup.
66 // For example, in the renderer the RenderThread instances will be able to 66 // For example, in the renderer the RenderThread instances will be able to
67 // notice shutdown before the render process begins waiting for them to exit. 67 // notice shutdown before the render process begins waiting for them to exit.
68 shutdown_event_.Signal(); 68 shutdown_event_.Signal();
69 69
70 // Kill the main thread object before nulling child_process, since
71 // destruction code might depend on it.
72 if (main_thread_) { // null in unittests. 70 if (main_thread_) { // null in unittests.
73 main_thread_->Shutdown(); 71 main_thread_->Shutdown();
74 main_thread_.reset(); 72 if (main_thread_->ShouldBeDestroyed()) {
73 main_thread_.reset();
74 } else {
75 // Leak the main_thread_. See a comment in
76 // RenderThreadImpl::ShouldBeDestroyed.
77 main_thread_.release();
78 }
75 } 79 }
76 80
77 g_lazy_tls.Pointer()->Set(NULL); 81 g_lazy_tls.Pointer()->Set(NULL);
78 io_thread_.Stop(); 82 io_thread_.Stop();
79 } 83 }
80 84
81 ChildThreadImpl* ChildProcess::main_thread() { 85 ChildThreadImpl* ChildProcess::main_thread() {
82 return main_thread_.get(); 86 return main_thread_.get();
83 } 87 }
84 88
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 memset(&sa, 0, sizeof(sa)); 156 memset(&sa, 0, sizeof(sa));
153 sa.sa_handler = SigUSR1Handler; 157 sa.sa_handler = SigUSR1Handler;
154 sigaction(SIGUSR1, &sa, NULL); 158 sigaction(SIGUSR1, &sa, NULL);
155 159
156 pause(); 160 pause();
157 #endif // defined(OS_ANDROID) 161 #endif // defined(OS_ANDROID)
158 #endif // defined(OS_POSIX) 162 #endif // defined(OS_POSIX)
159 } 163 }
160 164
161 } // namespace content 165 } // namespace content
OLDNEW
« base/at_exit.cc ('K') | « base/at_exit.cc ('k') | content/child/child_thread_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698