From 04a5ef8f994fc0734303d6a27f21c08647d5fb85 Mon Sep 17 00:00:00 2001 From: "ddorwin@chromium.org" Date: Mon, 17 Oct 2011 20:17:07 +0000 Subject: [PATCH] Properly ref-count the EndOfStream buffers. Also reverts most of the test change made in r105647. BUG=99596 TEST=Valgrind on media_unittests. Review URL: http://codereview.chromium.org/8319010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105890 0039d316-1c4b-4281-b951-d872f2087c98 --- media/filters/ffmpeg_demuxer.cc | 6 +++--- media/filters/ffmpeg_demuxer_unittest.cc | 10 ++-------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc index 2860c0cc05a1dc..be52626da5a4e1 100644 --- a/media/filters/ffmpeg_demuxer.cc +++ b/media/filters/ffmpeg_demuxer.cc @@ -142,7 +142,7 @@ void FFmpegDemuxerStream::Stop() { buffer_queue_.clear(); for (ReadQueue::iterator it = read_queue_.begin(); it != read_queue_.end(); ++it) { - it->Run(new DataBuffer(0)); + it->Run(scoped_refptr(new DataBuffer(0))); } read_queue_.clear(); stopped_ = true; @@ -165,7 +165,7 @@ void FFmpegDemuxerStream::Read(const ReadCallback& read_callback) { // // TODO(scherkus): it would be cleaner if we replied with an error message. if (stopped_) { - read_callback.Run(new DataBuffer(0)); + read_callback.Run(scoped_refptr(new DataBuffer(0))); return; } @@ -194,7 +194,7 @@ void FFmpegDemuxerStream::ReadTask(const ReadCallback& read_callback) { // // TODO(scherkus): it would be cleaner if we replied with an error message. if (stopped_) { - read_callback.Run(new DataBuffer(0)); + read_callback.Run(scoped_refptr(new DataBuffer(0))); return; } diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc index 231314de8c5edb..24fcdc36ba50d0 100644 --- a/media/filters/ffmpeg_demuxer_unittest.cc +++ b/media/filters/ffmpeg_demuxer_unittest.cc @@ -36,10 +36,6 @@ MATCHER(IsEndOfStreamBuffer, return arg->IsEndOfStream(); } -ACTION(DeleteArg0Buffer) { - scoped_refptr buffer(arg0); -} - // Fixture class to facilitate writing tests. Takes care of setting up the // FFmpeg, pipeline and filter host mocks. class FFmpegDemuxerTest : public testing::Test { @@ -407,8 +403,7 @@ TEST_F(FFmpegDemuxerTest, Stop) { // The callback should be immediately deleted. We'll use a checkpoint to // verify that it has indeed been deleted. - EXPECT_CALL(*callback, Run(IsEndOfStreamBuffer())) - .WillOnce(DeleteArg0Buffer()); + EXPECT_CALL(*callback, Run(IsEndOfStreamBuffer())); EXPECT_CALL(*callback, OnDelete()); EXPECT_CALL(*this, CheckPoint(1)); @@ -447,8 +442,7 @@ TEST_F(FFmpegDemuxerTest, StreamReadAfterStopAndDemuxerDestruction) { // The callback should be immediately deleted. We'll use a checkpoint to // verify that it has indeed been deleted. - EXPECT_CALL(*callback, Run(IsEndOfStreamBuffer())) - .WillOnce(DeleteArg0Buffer()); + EXPECT_CALL(*callback, Run(IsEndOfStreamBuffer())); EXPECT_CALL(*callback, OnDelete()); EXPECT_CALL(*this, CheckPoint(1));