Files
cef/patch/patches/child_shutdown_474165.patch
2016-01-27 09:11:59 -08:00

48 lines
1.7 KiB
Diff

diff --git child/child_thread_impl.cc child/child_thread_impl.cc
index 782c5d5..d1de033 100644
--- child/child_thread_impl.cc
+++ child/child_thread_impl.cc
@@ -512,10 +512,6 @@ void ChildThreadImpl::Init(const Options& options) {
}
ChildThreadImpl::~ChildThreadImpl() {
- // ChildDiscardableSharedMemoryManager has to be destroyed while
- // |thread_safe_sender_| is still valid.
- discardable_shared_memory_manager_.reset();
-
#ifdef IPC_MESSAGE_LOG_ENABLED
IPC::Logging::GetInstance()->SetIPCSender(NULL);
#endif
@@ -541,6 +537,9 @@ void ChildThreadImpl::Shutdown() {
file_system_dispatcher_.reset();
quota_dispatcher_.reset();
WebFileSystemImpl::DeleteThreadSpecificInstance();
+ // ChildDiscardableSharedMemoryManager has to be destroyed while
+ // |thread_safe_sender_| is still valid.
+ discardable_shared_memory_manager_.reset();
}
void ChildThreadImpl::OnChannelConnected(int32 peer_pid) {
diff --git renderer/render_thread_impl.cc renderer/render_thread_impl.cc
index aa5828c..52f65b1 100644
--- renderer/render_thread_impl.cc
+++ renderer/render_thread_impl.cc
@@ -765,8 +765,6 @@ void RenderThreadImpl::Shutdown() {
FOR_EACH_OBSERVER(
RenderProcessObserver, observers_, OnRenderProcessShutdown());
- ChildThreadImpl::Shutdown();
-
if (memory_observer_) {
message_loop()->RemoveTaskObserver(memory_observer_.get());
memory_observer_.reset();
@@ -857,6 +855,8 @@ void RenderThreadImpl::Shutdown() {
NPChannelBase::CleanupChannels();
#endif
+ ChildThreadImpl::Shutdown();
+
// Shut down the message loop and the renderer scheduler before shutting down
// Blink. This prevents a scenario where a pending task in the message loop
// accesses Blink objects after Blink shuts down.