summaryrefslogtreecommitdiffstats
path: root/media/cast/test/encode_decode_test.cc
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-24 13:09:08 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-24 13:09:08 +0000
commit7f14cecb6320d376210401220ebe407300e2368e (patch)
tree361fa8ed1c2b67729cf4c79a79cc27925bde8cdd /media/cast/test/encode_decode_test.cc
parent2eccbb3f4891f515ffb070aae7ecda2524cb7964 (diff)
downloadchromium_src-7f14cecb6320d376210401220ebe407300e2368e.zip
chromium_src-7f14cecb6320d376210401220ebe407300e2368e.tar.gz
chromium_src-7f14cecb6320d376210401220ebe407300e2368e.tar.bz2
Fixes for memory and threading issues in cast
This change fixes one issue in media/cast code. TickClock is not owned by CastEnvironment TickClock assigned to CastEnvironment is owned by the creator of CastSender/CastReceiver. However CastEnvironment is ref-counted. This means it is possible that TickClock is deleted but deferenced by some objects that still uses CastEnvironment. Fixing this requires a sweeping change in unit tests. And it also affects End2End test. The result is that CastEnvironment is shared between CastSender and CastReceiver. This adds requirements to log filtering because now a CastEnvironment used by CastSender can see receiver events. Tested this patch with valgrind and cast_unittests reports no error. BUG=336887 Review URL: https://codereview.chromium.org/145443005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@246863 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/cast/test/encode_decode_test.cc')
-rw-r--r--media/cast/test/encode_decode_test.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/media/cast/test/encode_decode_test.cc b/media/cast/test/encode_decode_test.cc
index 9464872..1d5fe56 100644
--- a/media/cast/test/encode_decode_test.cc
+++ b/media/cast/test/encode_decode_test.cc
@@ -73,14 +73,16 @@ class EncodeDecodeTestFrameCallback :
class EncodeDecodeTest : public ::testing::Test {
protected:
EncodeDecodeTest()
- : task_runner_(new test::FakeTaskRunner(&testing_clock_)),
+ : testing_clock_(new base::SimpleTestTickClock()),
+ task_runner_(new test::FakeTaskRunner(testing_clock_)),
// CastEnvironment will only be used by the vp8 decoder; Enable only the
// video decoder and main threads.
- cast_environment_(new CastEnvironment(&testing_clock_, task_runner_,
+ cast_environment_(new CastEnvironment(
+ scoped_ptr<base::TickClock>(testing_clock_).Pass(), task_runner_,
NULL, NULL, NULL, task_runner_, NULL,
GetDefaultCastReceiverLoggingConfig())),
test_callback_(new EncodeDecodeTestFrameCallback()) {
- testing_clock_.Advance(
+ testing_clock_->Advance(
base::TimeDelta::FromMilliseconds(kStartMillisecond));
encoder_config_.max_number_of_video_buffers_used = 1;
encoder_config_.number_of_cores = 1;
@@ -112,7 +114,7 @@ class EncodeDecodeTest : public ::testing::Test {
scoped_ptr<Vp8Encoder> encoder_;
scoped_ptr<Vp8Decoder> decoder_;
scoped_refptr<media::VideoFrame> video_frame_;
- base::SimpleTestTickClock testing_clock_;
+ base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
scoped_refptr<test::FakeTaskRunner> task_runner_;
scoped_refptr<CastEnvironment> cast_environment_;
scoped_refptr<EncodeDecodeTestFrameCallback> test_callback_;