diff options
author | dalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-07 06:45:55 +0000 |
---|---|---|
committer | dalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-07 06:45:55 +0000 |
commit | 6d4154b7addac3548b34cf487800775682e0144f (patch) | |
tree | aabd05be80eb99d69ca3f3630e60aafe9dcfb1e7 /media | |
parent | c26ad883dc1f62416070322edcaf3b5af191dd47 (diff) | |
download | chromium_src-6d4154b7addac3548b34cf487800775682e0144f.zip chromium_src-6d4154b7addac3548b34cf487800775682e0144f.tar.gz chromium_src-6d4154b7addac3548b34cf487800775682e0144f.tar.bz2 |
Fix incomplete teardown of demuxer.
I ran into an issue with PipelineIntegrationTests where one of the
security videos was causing ~FileDataSource to DCHECK complain about
file_ never being torn down.
Tracing this back, it's because we return NULL for the demuxer when
an error is encountered. This prevents demuxer->Stop() from being called
which leaves the data source in an unhappy state.
BUG=none
TEST=PipelineIntegrationTests/media_unittests
Review URL: http://codereview.chromium.org/9350004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120730 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/base/pipeline.cc | 8 | ||||
-rw-r--r-- | media/filters/ffmpeg_demuxer_factory.cc | 6 |
2 files changed, 3 insertions, 11 deletions
diff --git a/media/base/pipeline.cc b/media/base/pipeline.cc index bc3c749..0bfebf7 100644 --- a/media/base/pipeline.cc +++ b/media/base/pipeline.cc @@ -1139,17 +1139,13 @@ void Pipeline::OnDemuxerBuilt(PipelineStatus status, Demuxer* demuxer) { return; } + demuxer_ = demuxer; if (status != PIPELINE_OK) { SetError(status); return; } - if (!demuxer) { - SetError(PIPELINE_ERROR_REQUIRED_FILTER_MISSING); - return; - } - - demuxer_ = demuxer; + CHECK(demuxer_) << "Null demuxer encountered despite PIPELINE_OK."; demuxer_->set_host(this); { diff --git a/media/filters/ffmpeg_demuxer_factory.cc b/media/filters/ffmpeg_demuxer_factory.cc index 0c5e402..13494b9 100644 --- a/media/filters/ffmpeg_demuxer_factory.cc +++ b/media/filters/ffmpeg_demuxer_factory.cc @@ -22,11 +22,7 @@ FFmpegDemuxerFactory::~FFmpegDemuxerFactory() {} static void DemuxerInitDone(const DemuxerFactory::BuildCallback& cb, const scoped_refptr<FFmpegDemuxer>& demuxer, PipelineStatus status) { - if (status != PIPELINE_OK) { - cb.Run(status, NULL); - return; - } - cb.Run(PIPELINE_OK, demuxer); + cb.Run(status, demuxer); } void FFmpegDemuxerFactory::Build(const std::string& url, |