| Index: media/blink/multibuffer_data_source.cc
|
| diff --git a/media/blink/multibuffer_data_source.cc b/media/blink/multibuffer_data_source.cc
|
| index c4affe46770ec4f96b5cbde9a00c7ea5e2302002..9c776f5b3f8e35c0c2851efa4b81286eff79b914 100644
|
| --- a/media/blink/multibuffer_data_source.cc
|
| +++ b/media/blink/multibuffer_data_source.cc
|
| @@ -264,16 +264,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());
|
| @@ -308,6 +298,17 @@ 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);
|
| +
|
| + // Abort does not call StopLoader() since it is typically called prior to a
|
| + // seek or suspend. Let the loader logic make the decision about whether a new
|
| + // loader is necessary upon the seek or resume.
|
| +}
|
| +
|
| void MultibufferDataSource::SetBitrate(int bitrate) {
|
| render_task_runner_->PostTask(
|
| FROM_HERE, base::Bind(&MultibufferDataSource::SetBitrateTask,
|
| @@ -381,9 +382,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_) {
|
|
|