| Index: media/blink/multibuffer.cc
|
| diff --git a/media/blink/multibuffer.cc b/media/blink/multibuffer.cc
|
| index 41c35825f53d179b8dab721f71a4dd7baa03b25a..ffa0f18a19183ce3cef3a94f7e6d5ad5022bd0c9 100644
|
| --- a/media/blink/multibuffer.cc
|
| +++ b/media/blink/multibuffer.cc
|
| @@ -161,9 +161,7 @@ void MultiBuffer::AddReader(const BlockId& pos, Reader* reader) {
|
| }
|
| if (!provider) {
|
| DCHECK(writer_index_.find(pos) == writer_index_.end());
|
| - provider = writer_index_[pos] = CreateWriter(pos);
|
| - provider->SetAvailableCallback(base::Bind(
|
| - &MultiBuffer::DataProviderEvent, base::Unretained(this), provider));
|
| + provider = writer_index_[pos] = CreateWriter(pos).release();
|
| }
|
| provider->SetDeferred(false);
|
| }
|
| @@ -183,7 +181,7 @@ void MultiBuffer::CleanupWriters(const BlockId& pos) {
|
| BlockId closest_writer = ClosestPreviousEntry(writer_index_, p2);
|
| while (closest_writer > pos - kMaxWaitForWriterOffset) {
|
| DCHECK(writer_index_[closest_writer]);
|
| - DataProviderEvent(writer_index_[closest_writer]);
|
| + OnDataProviderEvent(writer_index_[closest_writer]);
|
| closest_writer = ClosestPreviousEntry(writer_index_, closest_writer - 1);
|
| }
|
| }
|
| @@ -258,8 +256,12 @@ void MultiBuffer::ReleaseBlocks(const std::vector<MultiBufferBlockId>& blocks) {
|
| }
|
| }
|
| }
|
| + if (data_.empty())
|
| + OnEmpty();
|
| }
|
|
|
| +void MultiBuffer::OnEmpty() {}
|
| +
|
| void MultiBuffer::AddProvider(scoped_ptr<DataProvider> provider) {
|
| // If there is already a provider in the same location, we delete it.
|
| DCHECK(!provider->Available());
|
| @@ -324,7 +326,7 @@ void MultiBuffer::Prune(size_t max_to_free) {
|
| lru_->Prune(max_to_free);
|
| }
|
|
|
| -void MultiBuffer::DataProviderEvent(DataProvider* provider_tmp) {
|
| +void MultiBuffer::OnDataProviderEvent(DataProvider* provider_tmp) {
|
| scoped_ptr<DataProvider> provider(RemoveProvider(provider_tmp));
|
| BlockId start_pos = provider->Tell();
|
| BlockId pos = start_pos;
|
|
|