diff options
author | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-12 22:24:27 +0000 |
---|---|---|
committer | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-12 22:24:27 +0000 |
commit | 7ba25eb2c3e3e1225e0c44c2731469ccb714a9a3 (patch) | |
tree | 892517b66036efc7c10b25361dd5d0a4acbbb739 /media | |
parent | d60fc9b2832f4f652373c2cdb2cc80c1741efb36 (diff) | |
download | chromium_src-7ba25eb2c3e3e1225e0c44c2731469ccb714a9a3.zip chromium_src-7ba25eb2c3e3e1225e0c44c2731469ccb714a9a3.tar.gz chromium_src-7ba25eb2c3e3e1225e0c44c2731469ccb714a9a3.tar.bz2 |
Fix DCHECKS caused by demuxer callbacks running on the wrong thread.
BUG=86536
TEST=None
Review URL: http://codereview.chromium.org/8240008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105172 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/base/pipeline_impl.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc index dd7f625..1eb4416 100644 --- a/media/base/pipeline_impl.cc +++ b/media/base/pipeline_impl.cc @@ -1336,6 +1336,12 @@ void PipelineImpl::DoStop(const base::Closure& callback) { } void PipelineImpl::OnDemuxerStopDone(const base::Closure& callback) { + if (MessageLoop::current() != message_loop_) { + message_loop_->PostTask(FROM_HERE, base::Bind( + &PipelineImpl::OnDemuxerStopDone, this, callback)); + return; + } + if (pipeline_filter_) { pipeline_filter_->Stop(callback); return; @@ -1362,6 +1368,12 @@ void PipelineImpl::DoSeek(base::TimeDelta seek_timestamp) { void PipelineImpl::OnDemuxerSeekDone(base::TimeDelta seek_timestamp, PipelineStatus status) { + if (MessageLoop::current() != message_loop_) { + message_loop_->PostTask(FROM_HERE, base::Bind( + &PipelineImpl::OnDemuxerSeekDone, this, seek_timestamp, status)); + return; + } + PipelineStatusCB done_cb = base::Bind(&PipelineImpl::OnFilterStateTransitionWithStatus, this); |