Index: media/blink/multibuffer_data_source.cc |
diff --git a/media/blink/multibuffer_data_source.cc b/media/blink/multibuffer_data_source.cc |
index 494ea264664aeaa3e005922b02633ae8b58e0bfd..a1a3020d6010e73d9cd19d90ec5bbd7f779b5b28 100644 |
--- a/media/blink/multibuffer_data_source.cc |
+++ b/media/blink/multibuffer_data_source.cc |
@@ -263,16 +263,6 @@ bool MultibufferDataSource::DidPassCORSAccessCheck() const { |
return true; |
} |
-void MultibufferDataSource::Abort() { |
- DCHECK(render_task_runner_->BelongsToCurrentThread()); |
- { |
- base::AutoLock auto_lock(lock_); |
- StopInternal_Locked(); |
- } |
- StopLoader(); |
- frame_ = NULL; |
-} |
- |
void MultibufferDataSource::MediaPlaybackRateChanged(double playback_rate) { |
DCHECK(render_task_runner_->BelongsToCurrentThread()); |
DCHECK(reader_.get()); |
@@ -307,6 +297,13 @@ void MultibufferDataSource::Stop() { |
weak_factory_.GetWeakPtr())); |
} |
+void MultibufferDataSource::Abort() { |
+ base::AutoLock auto_lock(lock_); |
+ DCHECK(init_cb_.is_null()); |
+ if (read_op_) |
+ ReadOperation::Run(std::move(read_op_), kAborted); |
+} |
+ |
void MultibufferDataSource::SetBitrate(int bitrate) { |
render_task_runner_->PostTask( |
FROM_HERE, base::Bind(&MultibufferDataSource::SetBitrateTask, |
@@ -380,9 +377,8 @@ void MultibufferDataSource::ReadTask() { |
base::AutoLock auto_lock(lock_); |
int bytes_read = 0; |
- if (stop_signal_received_) |
+ if (stop_signal_received_ || !read_op_) |
return; |
- DCHECK(read_op_); |
DCHECK(read_op_->size()); |
if (!reader_) { |