summaryrefslogtreecommitdiffstats
path: root/media/base/pipeline_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/base/pipeline_impl.cc')
-rw-r--r--media/base/pipeline_impl.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc
index 9b482f8..20bd4cb 100644
--- a/media/base/pipeline_impl.cc
+++ b/media/base/pipeline_impl.cc
@@ -237,6 +237,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_);
running_ = false;
@@ -533,6 +537,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) {