| 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
|
|
|