Index: content/renderer/media/webrtc_local_audio_track.cc |
diff --git a/content/renderer/media/webrtc_local_audio_track.cc b/content/renderer/media/webrtc_local_audio_track.cc |
index 0aa63658c516256a90b33696437143d775199f2b..dc54c00450899d837384c0db94020e4fd3ffcbc5 100644 |
--- a/content/renderer/media/webrtc_local_audio_track.cc |
+++ b/content/renderer/media/webrtc_local_audio_track.cc |
@@ -29,15 +29,17 @@ WebRtcLocalAudioTrack::WebRtcLocalAudioTrack( |
capturer_(capturer), |
track_source_(track_source) { |
DCHECK(capturer.get()); |
- capturer_->AddSink(this); |
DVLOG(1) << "WebRtcLocalAudioTrack::WebRtcLocalAudioTrack()"; |
} |
WebRtcLocalAudioTrack::~WebRtcLocalAudioTrack() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK(sinks_.empty()); |
- capturer_->RemoveSink(this); |
DVLOG(1) << "WebRtcLocalAudioTrack::~WebRtcLocalAudioTrack()"; |
+ |
+ // Users might not call Stop() on the track. |
+ if (capturer_) |
+ Stop(); |
} |
// Content::WebRtcAudioCapturerSink implementation. |
@@ -124,4 +126,20 @@ void WebRtcLocalAudioTrack::RemoveSink( |
} |
} |
+void WebRtcLocalAudioTrack::Start() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ DVLOG(1) << "WebRtcLocalAudioTrack::Start()"; |
+ if (capturer_) |
+ capturer_->AddSink(this); |
+} |
+ |
+void WebRtcLocalAudioTrack::Stop() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ DVLOG(1) << "WebRtcLocalAudioTrack::Stop()"; |
+ if (capturer_) { |
+ capturer_->RemoveSink(this); |
+ capturer_ = NULL; |
+ } |
+} |
+ |
} // namespace content |