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, |