summaryrefslogtreecommitdiffstats
path: root/media/base/serial_runner.cc
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-11 14:19:38 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-11 14:19:38 +0000
commitd50534f5cdd4e7f7ec476c5cb70ad9ae66ebdbb2 (patch)
tree5fe730faeb87117018be8717a0443e12eef39320 /media/base/serial_runner.cc
parent960058f702addf77db38368967747d26ab9dc075 (diff)
downloadchromium_src-d50534f5cdd4e7f7ec476c5cb70ad9ae66ebdbb2.zip
chromium_src-d50534f5cdd4e7f7ec476c5cb70ad9ae66ebdbb2.tar.gz
chromium_src-d50534f5cdd4e7f7ec476c5cb70ad9ae66ebdbb2.tar.bz2
Rewrite media::Pipeline state transition machinery and simplify shutdown.
Shutdown is now a single call to Stop() and is called regardless of the current state of pending operations. BUG=110228 Review URL: https://chromiumcodereview.appspot.com/10837206 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156011 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/serial_runner.cc')
-rw-r--r--media/base/serial_runner.cc12
1 files changed, 4 insertions, 8 deletions
diff --git a/media/base/serial_runner.cc b/media/base/serial_runner.cc
index b41ff0c..9d6c6ed 100644
--- a/media/base/serial_runner.cc
+++ b/media/base/serial_runner.cc
@@ -20,18 +20,14 @@ static void RunBoundClosure(
bound_closure.Run(base::Bind(status_cb, PIPELINE_OK));
}
-// Runs |status_cb| with |last_status| on |message_loop|, trampolining if
-// necessary.
+// Runs |status_cb| with |last_status| on |message_loop|.
static void RunOnMessageLoop(
const scoped_refptr<base::MessageLoopProxy>& message_loop,
const PipelineStatusCB& status_cb,
PipelineStatus last_status) {
- if (!message_loop->BelongsToCurrentThread()) {
- message_loop->PostTask(FROM_HERE, base::Bind(
- &RunOnMessageLoop, message_loop, status_cb, last_status));
- return;
- }
- status_cb.Run(last_status);
+ // Force post to permit cancellation of a series in the scenario where all
+ // bound functions run on the same thread.
+ message_loop->PostTask(FROM_HERE, base::Bind(status_cb, last_status));
}
SerialRunner::Queue::Queue() {}