diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-11 14:19:38 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-11 14:19:38 +0000 |
commit | d50534f5cdd4e7f7ec476c5cb70ad9ae66ebdbb2 (patch) | |
tree | 5fe730faeb87117018be8717a0443e12eef39320 /media/base/serial_runner.cc | |
parent | 960058f702addf77db38368967747d26ab9dc075 (diff) | |
download | chromium_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.cc | 12 |
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() {} |