Chromium Code Reviews| Index: media/mojo/clients/mojo_renderer_impl.cc |
| diff --git a/media/mojo/clients/mojo_renderer_impl.cc b/media/mojo/clients/mojo_renderer_impl.cc |
| index f407b89c57c7a98bcfa6b465b0911ad4d7631049..4baa2966685ed250a07df26191d476681d2922ec 100644 |
| --- a/media/mojo/clients/mojo_renderer_impl.cc |
| +++ b/media/mojo/clients/mojo_renderer_impl.cc |
| @@ -56,12 +56,22 @@ void MojoRendererImpl::Initialize( |
| demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO); |
| mojom::DemuxerStreamPtr audio_stream; |
| - if (audio) |
| - new MojoDemuxerStreamImpl(audio, GetProxy(&audio_stream)); |
| + if (audio) { |
| + audio_stream_.reset( |
| + new MojoDemuxerStreamImpl(audio, GetProxy(&audio_stream))); |
| + audio_stream_->set_connection_error_handler( |
| + base::Bind(&MojoRendererImpl::OnDemuxerStreamConnectionError, |
| + base::Unretained(this), DemuxerStream::AUDIO)); |
|
xhwang
2016/06/18 16:46:16
please add a comment about why Unretained() is saf
alokp
2016/06/19 04:57:45
Done.
|
| + } |
| mojom::DemuxerStreamPtr video_stream; |
| - if (video) |
| - new MojoDemuxerStreamImpl(video, GetProxy(&video_stream)); |
| + if (video) { |
| + video_stream_.reset( |
| + new MojoDemuxerStreamImpl(video, GetProxy(&video_stream))); |
| + video_stream_->set_connection_error_handler( |
| + base::Bind(&MojoRendererImpl::OnDemuxerStreamConnectionError, |
| + base::Unretained(this), DemuxerStream::VIDEO)); |
| + } |
| BindRemoteRendererIfNeeded(); |
| @@ -202,6 +212,19 @@ void MojoRendererImpl::OnConnectionError() { |
| client_->OnError(PIPELINE_ERROR_DECODE); |
| } |
| +void MojoRendererImpl::OnDemuxerStreamConnectionError( |
| + DemuxerStream::Type type) { |
| + DVLOG(1) << __FUNCTION__ << ": " << type; |
| + DCHECK(task_runner_->BelongsToCurrentThread()); |
| + |
| + if (type == DemuxerStream::AUDIO) { |
| + audio_stream_.reset(); |
| + } else { |
| + DCHECK(type == DemuxerStream::VIDEO); |
| + video_stream_.reset(); |
| + } |
|
xhwang
2016/06/18 16:46:16
Just to be safe,
} else if (type == VIDEO) {
.
alokp
2016/06/19 04:57:45
Done.
|
| +} |
| + |
| void MojoRendererImpl::BindRemoteRendererIfNeeded() { |
| DVLOG(2) << __FUNCTION__; |
| DCHECK(task_runner_->BelongsToCurrentThread()); |