Index: media/filters/chunk_demuxer.cc |
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
index 832caa32459ca84426793a883e5186726684812f..443c7c5558873ff0326294e29c72a53bb6ca0ab3 100644 |
--- a/media/filters/chunk_demuxer.cc |
+++ b/media/filters/chunk_demuxer.cc |
@@ -510,6 +510,18 @@ int64_t ChunkDemuxer::GetMemoryUsage() const { |
(video_ ? video_->GetBufferedSize() : 0); |
} |
+void ChunkDemuxer::AbortPendingReads() { |
+ base::AutoLock auto_lock(lock_); |
+ DCHECK(state_ == INITIALIZED || state_ == ENDED || state_ == SHUTDOWN || |
+ state_ == PARSE_ERROR) |
+ << state_; |
+ |
+ if (state_ == SHUTDOWN || state_ == PARSE_ERROR) |
+ return; |
+ |
+ AbortPendingReads_Locked(); |
+} |
+ |
void ChunkDemuxer::StartWaitingForSeek(TimeDelta seek_time) { |
DVLOG(1) << "StartWaitingForSeek()"; |
base::AutoLock auto_lock(lock_); |
@@ -520,7 +532,7 @@ void ChunkDemuxer::StartWaitingForSeek(TimeDelta seek_time) { |
if (state_ == SHUTDOWN || state_ == PARSE_ERROR) |
return; |
- AbortPendingReads(); |
+ AbortPendingReads_Locked(); |
SeekAllSources(seek_time); |
// Cancel state set in CancelPendingSeek() since we want to |
@@ -536,7 +548,7 @@ void ChunkDemuxer::CancelPendingSeek(TimeDelta seek_time) { |
if (cancel_next_seek_) |
return; |
- AbortPendingReads(); |
+ AbortPendingReads_Locked(); |
SeekAllSources(seek_time); |
if (seek_cb_.is_null()) { |
@@ -1238,7 +1250,7 @@ void ChunkDemuxer::StartReturningData() { |
} |
} |
-void ChunkDemuxer::AbortPendingReads() { |
+void ChunkDemuxer::AbortPendingReads_Locked() { |
for (MediaSourceStateMap::iterator itr = source_state_map_.begin(); |
itr != source_state_map_.end(); ++itr) { |
itr->second->AbortReads(); |