diff options
Diffstat (limited to 'media/base/pipeline_impl.cc')
-rw-r--r-- | media/base/pipeline_impl.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc index 10ab9a3..05ee62e 100644 --- a/media/base/pipeline_impl.cc +++ b/media/base/pipeline_impl.cc @@ -247,6 +247,10 @@ PipelineError PipelineImpl::GetError() const { return error_; } +void PipelineImpl::SetPipelineErrorCallback(PipelineCallback* error_callback) { + error_callback_.reset(error_callback); +} + void PipelineImpl::ResetState() { AutoLock auto_lock(lock_); const base::TimeDelta kZero; @@ -551,6 +555,12 @@ void PipelineImpl::ErrorChangedTask(PipelineError error) { // Destroy every filter and reset the pipeline as well. DestroyFilters(); + + // If our owner has requested to be notified of an error, execute + // |error_callback_| unless we have a "good" error. + if (error_callback_.get() && error != PIPELINE_STOPPING) { + error_callback_->Run(); + } } void PipelineImpl::PlaybackRateChangedTask(float playback_rate) { |