| Index: media/base/serial_runner.cc
|
| diff --git a/media/base/serial_runner.cc b/media/base/serial_runner.cc
|
| index 0af441a8a5bfd35cf091d5a56ed4ca639dd609fe..257cd910ae8a6e56ca1b9fdb5f56d6fd7c04c91b 100644
|
| --- a/media/base/serial_runner.cc
|
| +++ b/media/base/serial_runner.cc
|
| @@ -54,17 +54,19 @@ bool SerialRunner::Queue::empty() {
|
| return bound_fns_.empty();
|
| }
|
|
|
| -SerialRunner::SerialRunner(
|
| - const Queue& bound_fns, const PipelineStatusCB& done_cb)
|
| - : weak_this_(this),
|
| - task_runner_(base::MessageLoopProxy::current()),
|
| +SerialRunner::SerialRunner(const Queue& bound_fns,
|
| + const PipelineStatusCB& done_cb)
|
| + : task_runner_(base::MessageLoopProxy::current()),
|
| bound_fns_(bound_fns),
|
| - done_cb_(done_cb) {
|
| + done_cb_(done_cb),
|
| + weak_factory_(this) {
|
| // Respect both cancellation and calling stack guarantees for |done_cb|
|
| // when empty.
|
| if (bound_fns_.empty()) {
|
| - task_runner_->PostTask(FROM_HERE, base::Bind(
|
| - &SerialRunner::RunNextInSeries, weak_this_.GetWeakPtr(), PIPELINE_OK));
|
| + task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(&SerialRunner::RunNextInSeries,
|
| + weak_factory_.GetWeakPtr(),
|
| + PIPELINE_OK));
|
| return;
|
| }
|
|
|
| @@ -90,8 +92,10 @@ void SerialRunner::RunNextInSeries(PipelineStatus last_status) {
|
| }
|
|
|
| BoundPipelineStatusCB bound_fn = bound_fns_.Pop();
|
| - bound_fn.Run(base::Bind(&RunOnTaskRunner, task_runner_, base::Bind(
|
| - &SerialRunner::RunNextInSeries, weak_this_.GetWeakPtr())));
|
| + bound_fn.Run(base::Bind(
|
| + &RunOnTaskRunner,
|
| + task_runner_,
|
| + base::Bind(&SerialRunner::RunNextInSeries, weak_factory_.GetWeakPtr())));
|
| }
|
|
|
| } // namespace media
|
|
|