Index: media/base/android/media_decoder_job.cc |
diff --git a/media/base/android/media_decoder_job.cc b/media/base/android/media_decoder_job.cc |
index b7eef0cdfbfbdb0769aaab6b621fda43f2948108..8b8c9b2e31e1158bcfe1056e33e9142e69eb172b 100644 |
--- a/media/base/android/media_decoder_job.cc |
+++ b/media/base/android/media_decoder_job.cc |
@@ -72,13 +72,19 @@ void MediaDecoderJob::OnDataReceived(const DemuxerData& data) { |
is_requesting_demuxer_data_ = false; |
base::Closure done_cb = base::ResetAndReturn(&on_data_received_cb_); |
+ |
+ // If this data request is for the inactive chunk, or |on_data_received_cb_| |
+ // was set to null by ClearData() or Release(), do nothing. |
+ if (done_cb.is_null()) |
+ return; |
+ |
if (stop_decode_pending_) { |
+ DCHECK(is_decoding()); |
OnDecodeCompleted(MEDIA_CODEC_STOPPED, kNoTimestamp(), 0); |
return; |
} |
- if (!done_cb.is_null()) |
- done_cb.Run(); |
+ done_cb.Run(); |
} |
void MediaDecoderJob::Prefetch(const base::Closure& prefetch_cb) { |