Index: content/renderer/render_thread_impl.cc |
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
index e84132f08f94b137ce01d819f96f00e5e2279c20..fc1c07fcbc61442fd1bddae808e9ecedd74588fd 100644 |
--- a/content/renderer/render_thread_impl.cc |
+++ b/content/renderer/render_thread_impl.cc |
@@ -347,7 +347,7 @@ void RenderThreadImpl::Init() { |
db_message_filter_ = new DBMessageFilter(); |
AddFilter(db_message_filter_.get()); |
- vc_manager_ = new VideoCaptureImplManager(); |
+ vc_manager_.reset(new VideoCaptureImplManager()); |
AddFilter(vc_manager_->video_capture_message_filter()); |
#if defined(ENABLE_WEBRTC) |
@@ -361,7 +361,7 @@ void RenderThreadImpl::Init() { |
webrtc_identity_service_.reset(new WebRTCIdentityService()); |
media_stream_factory_.reset(new MediaStreamDependencyFactory( |
- vc_manager_.get(), p2p_socket_dispatcher_.get())); |
+ p2p_socket_dispatcher_.get())); |
AddObserver(media_stream_factory_.get()); |
#endif // defined(ENABLE_WEBRTC) |
@@ -464,7 +464,13 @@ void RenderThreadImpl::Shutdown() { |
RemoveFilter(audio_message_filter_.get()); |
audio_message_filter_ = NULL; |
+ // |media_stream_factory_| produces users of |vc_manager_| so it must be |
+ // destroyed first. |
+#if defined(ENABLE_WEBRTC) |
+ media_stream_factory_.reset(); |
+#endif |
RemoveFilter(vc_manager_->video_capture_message_filter()); |
+ vc_manager_.reset(); |
RemoveFilter(db_message_filter_.get()); |
db_message_filter_ = NULL; |