| Index: content/renderer/media/android/media_source_delegate.cc
|
| diff --git a/content/renderer/media/android/media_source_delegate.cc b/content/renderer/media/android/media_source_delegate.cc
|
| index 93e46aac023a77a45f18a8524350c0f378437f48..9e6d95446395810bdfffcbd831fa277cced97320 100644
|
| --- a/content/renderer/media/android/media_source_delegate.cc
|
| +++ b/content/renderer/media/android/media_source_delegate.cc
|
| @@ -139,10 +139,14 @@ void MediaSourceDelegate::StopDemuxer() {
|
| media_weak_factory_.InvalidateWeakPtrs();
|
| DCHECK(!media_weak_factory_.HasWeakPtrs());
|
|
|
| - // The callback OnDemuxerStopDone() owns |this| and will delete it when
|
| - // called. Hence using base::Unretained(this) is safe here.
|
| - chunk_demuxer_->Stop(base::Bind(&MediaSourceDelegate::OnDemuxerStopDone,
|
| - base::Unretained(this)));
|
| + chunk_demuxer_->Stop();
|
| + chunk_demuxer_.reset();
|
| +
|
| + // The callback DeleteSelf() owns |this| and will delete it when called.
|
| + // Hence using base::Unretained(this) is safe here.
|
| + media_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&MediaSourceDelegate::DeleteSelf, base::Unretained(this)));
|
| }
|
|
|
| void MediaSourceDelegate::InitializeMediaSource(
|
| @@ -626,18 +630,9 @@ void MediaSourceDelegate::FinishResettingDecryptingDemuxerStreams() {
|
| demuxer_client_->DemuxerSeekDone(demuxer_client_id_, browser_seek_time_);
|
| }
|
|
|
| -void MediaSourceDelegate::OnDemuxerStopDone() {
|
| - DCHECK(media_task_runner_->BelongsToCurrentThread());
|
| - DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_;
|
| - main_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&MediaSourceDelegate::DeleteSelf, base::Unretained(this)));
|
| -}
|
| -
|
| void MediaSourceDelegate::DeleteSelf() {
|
| DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_;
|
| - chunk_demuxer_.reset();
|
| delete this;
|
| }
|
|
|
|
|