| Index: content/renderer/render_thread_impl.cc
|
| diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
|
| index 3b2ff69cf48366cb6fcdfae4420f3a28611dd66c..1df46e9c7a671fcf1e720e24a441350f503061c0 100644
|
| --- a/content/renderer/render_thread_impl.cc
|
| +++ b/content/renderer/render_thread_impl.cc
|
| @@ -401,6 +401,13 @@ RenderThreadImpl::RenderThreadImpl(const std::string& channel_name)
|
| Init();
|
| }
|
|
|
| +RenderThreadImpl::RenderThreadImpl(
|
| + scoped_ptr<base::MessageLoop> main_message_loop)
|
| + : ChildThread(Options(ShouldUseMojoChannel())),
|
| + main_message_loop_(main_message_loop.Pass()) {
|
| + Init();
|
| +}
|
| +
|
| void RenderThreadImpl::Init() {
|
| TRACE_EVENT_BEGIN_ETW("RenderThreadImpl::Init", 0, "");
|
|
|
| @@ -657,6 +664,12 @@ void RenderThreadImpl::Shutdown() {
|
|
|
| main_thread_compositor_task_runner_ = NULL;
|
|
|
| + gpu_channel_ = NULL;
|
| +
|
| + // Shut down the message loop before shutting down Blink.
|
| + // This prevents a scenario where a pending task in the message loop accesses
|
| + // Blink objects after Blink shuts down.
|
| + main_message_loop_.reset();
|
| if (webkit_platform_support_)
|
| blink::shutdown();
|
|
|
|
|