| Index: media/filters/decoder_base.h
|
| diff --git a/media/filters/decoder_base.h b/media/filters/decoder_base.h
|
| index 6cf49374b411036a2aca07e554904d731d0f24a4..a889e19fb1082de5d09b9c7062861b8d4d8efd91 100644
|
| --- a/media/filters/decoder_base.h
|
| +++ b/media/filters/decoder_base.h
|
| @@ -34,11 +34,10 @@ class DecoderBase : public Decoder {
|
| NewRunnableMethod(this, &DecoderBase::StopTask, callback));
|
| }
|
|
|
| - virtual void Seek(base::TimeDelta time,
|
| - FilterCallback* callback) {
|
| + virtual void Seek(base::TimeDelta time, const FilterStatusCB& cb) {
|
| message_loop_->PostTask(
|
| FROM_HERE,
|
| - NewRunnableMethod(this, &DecoderBase::SeekTask, time, callback));
|
| + NewRunnableMethod(this, &DecoderBase::SeekTask, time, cb));
|
| }
|
|
|
| // Decoder implementation.
|
| @@ -170,25 +169,22 @@ class DecoderBase : public Decoder {
|
| }
|
| }
|
|
|
| - void SeekTask(base::TimeDelta time, FilterCallback* callback) {
|
| + void SeekTask(base::TimeDelta time, const FilterStatusCB& cb) {
|
| DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| DCHECK_EQ(0u, pending_reads_) << "Pending reads should have completed";
|
| DCHECK_EQ(0u, pending_requests_) << "Pending requests should be empty";
|
|
|
| // Delegate to the subclass first.
|
| - DoSeek(time,
|
| - NewRunnableMethod(this, &DecoderBase::OnSeekComplete, callback));
|
| + DoSeek(time, NewRunnableMethod(this, &DecoderBase::OnSeekComplete, cb));
|
| }
|
|
|
| - void OnSeekComplete(FilterCallback* callback) {
|
| + void OnSeekComplete(const FilterStatusCB& cb) {
|
| // Flush our decoded results.
|
| result_queue_.clear();
|
|
|
| // Signal that we're done seeking.
|
| - if (callback) {
|
| - callback->Run();
|
| - delete callback;
|
| - }
|
| + if (!cb.is_null())
|
| + cb.Run(PIPELINE_OK);
|
| }
|
|
|
| void InitializeTask(DemuxerStream* demuxer_stream,
|
|
|