summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authoracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-12 22:24:27 +0000
committeracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-12 22:24:27 +0000
commit7ba25eb2c3e3e1225e0c44c2731469ccb714a9a3 (patch)
tree892517b66036efc7c10b25361dd5d0a4acbbb739 /media
parentd60fc9b2832f4f652373c2cdb2cc80c1741efb36 (diff)
downloadchromium_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.cc12
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);