Chromium Code Reviews| Index: media/base/composite_filter.cc |
| diff --git a/media/base/composite_filter.cc b/media/base/composite_filter.cc |
| index f613f362ffb47debeaf2daeb6c512c9d8b11b311..ffcba984e36f944f5071d40e23e6c9c427317407 100644 |
| --- a/media/base/composite_filter.cc |
| +++ b/media/base/composite_filter.cc |
| @@ -69,6 +69,27 @@ bool CompositeFilter::AddFilter(scoped_refptr<Filter> filter) { |
| return true; |
| } |
| +bool CompositeFilter::RemoveFilter(scoped_refptr<Filter> filter) { |
|
scherkus (not reviewing)
2011/12/06 00:27:44
unittest?
Ami GONE FROM CHROMIUM
2011/12/07 00:03:04
Really? Ok, done.
|
| + DCHECK_EQ(message_loop_, MessageLoop::current()); |
| + if (!filter.get() || state_ != kCreated || !host()) |
| + return false; |
| + |
| + bool found = false; |
| + for (FilterVector::iterator it = filters_.begin(); |
| + it != filters_.end() && !found; ++it) { |
| + if (it->get() == filter.get()) { |
| + filters_.erase(it); |
| + found = true; |
| + } |
| + } |
| + filter->clear_host(); |
| + |
| + if (!found) |
| + return false; |
| + |
| + return true; |
| +} |
| + |
| void CompositeFilter::set_host(FilterHost* host) { |
| DCHECK_EQ(message_loop_, MessageLoop::current()); |
| DCHECK(host); |
| @@ -339,7 +360,6 @@ void CompositeFilter::SerialCallback() { |
| DispatchPendingCallback(status_); |
| return; |
| } |
| - |
| if (!filters_.empty()) |
| sequence_index_++; |
| @@ -377,7 +397,6 @@ void CompositeFilter::ParallelCallback() { |
| void CompositeFilter::OnCallSequenceDone() { |
| State next_state = GetNextState(state_); |
| - |
| if (next_state == kInvalid) { |
| // We somehow got into an unexpected state. |
| ChangeState(kError); |