Chromium Code Reviews| Index: content/renderer/media/media_stream_impl.cc |
| diff --git a/content/renderer/media/media_stream_impl.cc b/content/renderer/media/media_stream_impl.cc |
| index 85c8fdebc9f401f92cedcd10c2949c76991e8705..1c983841cb37ab1ab7dca2a448274aa1e7cb7630 100644 |
| --- a/content/renderer/media/media_stream_impl.cc |
| +++ b/content/renderer/media/media_stream_impl.cc |
| @@ -225,6 +225,35 @@ bool MediaStreamImpl::CheckMediaStream(const GURL& url) { |
| (!stream->GetVideoTracks().empty() || !stream->GetAudioTracks().empty())); |
| } |
| +// static |
| +void MediaStreamImpl::ReleaseSourceObservers( |
|
perkj_chrome
2013/04/18 13:36:20
Why does this method has to be static?
You only c
tommi (sloooow) - chröme
2013/04/23 09:50:55
...and file a bug as well?
|
| + WebKit::WebMediaStream descriptor) { |
| + if (descriptor.isNull()) |
| + return; |
| + |
| + WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; |
| + descriptor.audioSources(audio_tracks); |
|
perkj_chrome
2013/04/18 13:36:20
use audioTracks
|
| + for (size_t i = 0; i < audio_tracks.size(); ++i) { |
| + const WebKit::WebMediaStreamSource& source = audio_tracks[i].source(); |
|
perkj_chrome
2013/04/18 13:36:20
Thinking about this- You can do
source.setExtraDa
tommi (sloooow) - chröme
2013/04/23 09:50:55
If you create a new source object from another con
|
| + content::MediaStreamSourceExtraData* source_data = |
| + static_cast<content::MediaStreamSourceExtraData*>(source.extraData()); |
| + if (source_data) { |
| + source_data->SetSourceObserver(NULL); |
| + } |
| + } |
| + |
| + WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; |
| + descriptor.videoSources(video_tracks); |
|
perkj_chrome
2013/04/18 13:36:20
use videoTracks
|
| + for (size_t i = 0; i < video_tracks.size(); ++i) { |
| + const WebKit::WebMediaStreamSource& source = video_tracks[i].source(); |
| + content::MediaStreamSourceExtraData* source_data = |
| + static_cast<content::MediaStreamSourceExtraData*>(source.extraData()); |
| + if (source_data) { |
| + source_data->SetSourceObserver(NULL); |
| + } |
| + } |
| +} |
| + |
| scoped_refptr<webkit_media::VideoFrameProvider> |
| MediaStreamImpl::GetVideoFrameProvider( |
| const GURL& url, |
| @@ -593,4 +622,8 @@ void MediaStreamExtraData::OnLocalStreamStop() { |
| stream_stop_callback_.Run(stream_->label()); |
| } |
| +MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() { |
| + ReleaseSourceObservers(descriptor); |
|
perkj_chrome
2013/04/18 13:36:20
Did I miss something or can you move the ReleaseSo
|
| +} |
| + |
| } // namespace content |