Index: media/base/pipeline_impl.cc |
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc |
index d7ad574b3ad02c19d212960691e2d40a32bb5d5a..80e0a00fa3a3d2d1b467f3336419bdfc5fe8761e 100644 |
--- a/media/base/pipeline_impl.cc |
+++ b/media/base/pipeline_impl.cc |
@@ -9,6 +9,7 @@ |
#include <algorithm> |
+#include "base/bind.h" |
#include "base/callback.h" |
#include "base/compiler_specific.h" |
#include "base/stl_util-inl.h" |
@@ -575,6 +576,13 @@ void PipelineImpl::OnFilterStateTransition() { |
NewRunnableMethod(this, &PipelineImpl::FilterStateTransitionTask)); |
} |
+// Called from any thread. |
+void PipelineImpl::OnFilterStateTransitionWithStatus(PipelineStatus status) { |
+ if (status != PIPELINE_OK) |
+ SetError(status); |
Ami GONE FROM CHROMIUM
2011/05/12 20:42:16
This is funky b/c it posts the errorchanged task,
acolwell GONE FROM CHROMIUM
2011/05/12 22:30:40
Yes. This is one of the major reasons why I want t
|
+ OnFilterStateTransition(); |
+} |
+ |
void PipelineImpl::OnTeardownStateTransition() { |
message_loop_->PostTask(FROM_HERE, |
NewRunnableMethod(this, &PipelineImpl::TeardownStateTransitionTask)); |
@@ -710,8 +718,9 @@ void PipelineImpl::InitializeTask() { |
seek_pending_ = true; |
set_state(kSeeking); |
seek_timestamp_ = base::TimeDelta(); |
- pipeline_filter_->Seek(seek_timestamp_, |
- NewCallback(this, &PipelineImpl::OnFilterStateTransition)); |
+ pipeline_filter_->Seek( |
+ seek_timestamp_, |
+ base::Bind(&PipelineImpl::OnFilterStateTransitionWithStatus, this)); |
} |
} |
@@ -952,7 +961,7 @@ void PipelineImpl::FilterStateTransitionTask() { |
NewCallback(this, &PipelineImpl::OnFilterStateTransition)); |
} else if (state_ == kSeeking) { |
pipeline_filter_->Seek(seek_timestamp_, |
- NewCallback(this, &PipelineImpl::OnFilterStateTransition)); |
+ base::Bind(&PipelineImpl::OnFilterStateTransitionWithStatus, this)); |
} else if (state_ == kStarting) { |
pipeline_filter_->Play( |
NewCallback(this, &PipelineImpl::OnFilterStateTransition)); |