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 57fc0157ca4ed157ea1e4837d90ee9153ae90d5e..bfacf5b80d87aca27af6df450c7c8175c10d20d6 100644 |
--- a/content/renderer/media/android/media_source_delegate.cc |
+++ b/content/renderer/media/android/media_source_delegate.cc |
@@ -132,9 +132,8 @@ void MediaSourceDelegate::StopDemuxer() { |
// The callback OnDemuxerStopDone() owns |this| and will delete it when |
// called. Hence using base::Unretained(this) is safe here. |
- demuxer_->Stop(media::BindToLoop(main_loop_, |
- base::Bind(&MediaSourceDelegate::OnDemuxerStopDone, |
- base::Unretained(this)))); |
+ demuxer_->Stop(base::Bind(&MediaSourceDelegate::OnDemuxerStopDone, |
+ base::Unretained(this))); |
} |
void MediaSourceDelegate::InitializeMediaSource( |
@@ -662,6 +661,14 @@ void MediaSourceDelegate::FinishResettingDecryptingDemuxerStreams() { |
} |
void MediaSourceDelegate::OnDemuxerStopDone() { |
+ DCHECK(media_loop_->BelongsToCurrentThread()); |
+ DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; |
+ main_loop_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&MediaSourceDelegate::DeleteSelf, base::Unretained(this))); |
+} |
+ |
+void MediaSourceDelegate::DeleteSelf() { |
DCHECK(main_loop_->BelongsToCurrentThread()); |
DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; |
chunk_demuxer_.reset(); |