From 6d4154b7addac3548b34cf487800775682e0144f Mon Sep 17 00:00:00 2001 From: "dalecurtis@chromium.org" Date: Tue, 7 Feb 2012 06:45:55 +0000 Subject: 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 --- media/base/pipeline.cc | 8 ++------ media/filters/ffmpeg_demuxer_factory.cc | 6 +----- 2 files changed, 3 insertions(+), 11 deletions(-) (limited to 'media') 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& 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, -- cgit v1.1