summaryrefslogtreecommitdiff
path: root/media/base/serial_runner.cc
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2013-08-30 15:14:49 +0100
committerTorne (Richard Coles) <torne@google.com>2013-08-30 15:14:49 +0100
commit424c4d7b64af9d0d8fd9624f381f469654d5e3d2 (patch)
treeaf8b16dc2ba7fc8c8bb1c9fa18b907c847f3883d /media/base/serial_runner.cc
parentc70ef2906f891fe7d218980660e4cda465717916 (diff)
downloadchromium_org-424c4d7b64af9d0d8fd9624f381f469654d5e3d2.tar.gz
Merge from Chromium at DEPS revision r220549
This commit was generated by merge_to_master.py. Change-Id: I8fcb82db764ec1eb0294280936c177bd9ba8a9e9
Diffstat (limited to 'media/base/serial_runner.cc')
-rw-r--r--media/base/serial_runner.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/media/base/serial_runner.cc b/media/base/serial_runner.cc
index fa39133146..dfc4a0b9fc 100644
--- a/media/base/serial_runner.cc
+++ b/media/base/serial_runner.cc
@@ -59,9 +59,15 @@ SerialRunner::SerialRunner(
message_loop_(base::MessageLoopProxy::current()),
bound_fns_(bound_fns),
done_cb_(done_cb) {
- message_loop_->PostTask(FROM_HERE, base::Bind(
- &SerialRunner::RunNextInSeries, weak_this_.GetWeakPtr(),
- PIPELINE_OK));
+ // Respect both cancellation and calling stack guarantees for |done_cb|
+ // when empty.
+ if (bound_fns_.empty()) {
+ message_loop_->PostTask(FROM_HERE, base::Bind(
+ &SerialRunner::RunNextInSeries, weak_this_.GetWeakPtr(), PIPELINE_OK));
+ return;
+ }
+
+ RunNextInSeries(PIPELINE_OK);
}
SerialRunner::~SerialRunner() {}