Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Side by Side Diff: cc/test/layer_tree_test.cc

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/test/layer_tree_test.h ('k') | cc/test/scheduler_test_common.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/test/layer_tree_test.h" 5 #include "cc/test/layer_tree_test.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "cc/animation/animation.h" 8 #include "cc/animation/animation.h"
9 #include "cc/animation/animation_registrar.h" 9 #include "cc/animation/animation_registrar.h"
10 #include "cc/animation/layer_animation_controller.h" 10 #include "cc/animation/layer_animation_controller.h"
11 #include "cc/animation/timing_function.h" 11 #include "cc/animation/timing_function.h"
12 #include "cc/base/switches.h" 12 #include "cc/base/switches.h"
13 #include "cc/input/input_handler.h" 13 #include "cc/input/input_handler.h"
14 #include "cc/layers/content_layer.h" 14 #include "cc/layers/content_layer.h"
15 #include "cc/layers/layer.h" 15 #include "cc/layers/layer.h"
16 #include "cc/layers/layer_impl.h" 16 #include "cc/layers/layer_impl.h"
17 #include "cc/test/animation_test_common.h" 17 #include "cc/test/animation_test_common.h"
18 #include "cc/test/begin_frame_args_test.h"
18 #include "cc/test/fake_layer_tree_host_client.h" 19 #include "cc/test/fake_layer_tree_host_client.h"
19 #include "cc/test/fake_output_surface.h" 20 #include "cc/test/fake_output_surface.h"
20 #include "cc/test/test_context_provider.h" 21 #include "cc/test/test_context_provider.h"
21 #include "cc/test/test_gpu_memory_buffer_manager.h" 22 #include "cc/test/test_gpu_memory_buffer_manager.h"
22 #include "cc/test/test_shared_bitmap_manager.h" 23 #include "cc/test/test_shared_bitmap_manager.h"
23 #include "cc/test/tiled_layer_test_common.h" 24 #include "cc/test/tiled_layer_test_common.h"
24 #include "cc/trees/layer_tree_host_client.h" 25 #include "cc/trees/layer_tree_host_client.h"
25 #include "cc/trees/layer_tree_host_impl.h" 26 #include "cc/trees/layer_tree_host_impl.h"
26 #include "cc/trees/layer_tree_host_single_thread_client.h" 27 #include "cc/trees/layer_tree_host_single_thread_client.h"
27 #include "cc/trees/layer_tree_impl.h" 28 #include "cc/trees/layer_tree_impl.h"
(...skipping 18 matching lines...) Expand all
46 47
47 void TestHooks::CreateResourceAndRasterWorkerPool( 48 void TestHooks::CreateResourceAndRasterWorkerPool(
48 LayerTreeHostImpl* host_impl, 49 LayerTreeHostImpl* host_impl,
49 scoped_ptr<RasterWorkerPool>* raster_worker_pool, 50 scoped_ptr<RasterWorkerPool>* raster_worker_pool,
50 scoped_ptr<ResourcePool>* resource_pool, 51 scoped_ptr<ResourcePool>* resource_pool,
51 scoped_ptr<ResourcePool>* staging_resource_pool) { 52 scoped_ptr<ResourcePool>* staging_resource_pool) {
52 host_impl->LayerTreeHostImpl::CreateResourceAndRasterWorkerPool( 53 host_impl->LayerTreeHostImpl::CreateResourceAndRasterWorkerPool(
53 raster_worker_pool, resource_pool, staging_resource_pool); 54 raster_worker_pool, resource_pool, staging_resource_pool);
54 } 55 }
55 56
56 base::TimeDelta TestHooks::LowFrequencyAnimationInterval() const { 57 class ExternalBeginFrameSourceForTest
57 return base::TimeDelta::FromMilliseconds(16); 58 : public BeginFrameSourceMixIn,
58 } 59 public NON_EXPORTED_BASE(base::NonThreadSafe) {
60 public:
61 explicit ExternalBeginFrameSourceForTest(double refresh_rate)
62 : milliseconds_per_frame_(1000.0 / refresh_rate),
63 is_ready_(false),
64 weak_ptr_factory_(this) {
65 DetachFromThread();
66 }
67
68 virtual ~ExternalBeginFrameSourceForTest() {
69 DCHECK(CalledOnValidThread());
70 }
71
72 virtual void OnNeedsBeginFramesChange(bool needs_begin_frames) override {
73 DCHECK(CalledOnValidThread());
74 if (needs_begin_frames) {
75 base::MessageLoop::current()->PostDelayedTask(
76 FROM_HERE,
77 base::Bind(&ExternalBeginFrameSourceForTest::TestOnBeginFrame,
78 weak_ptr_factory_.GetWeakPtr()),
79 base::TimeDelta::FromMilliseconds(milliseconds_per_frame_));
80 }
81 }
82
83 virtual void SetClientReady() override {
84 DCHECK(CalledOnValidThread());
85 is_ready_ = true;
86 }
87
88 bool is_ready() const {
89 return is_ready_;
90 }
91
92 void TestOnBeginFrame() {
93 DCHECK(CalledOnValidThread());
94 CallOnBeginFrame(CreateBeginFrameArgsForTesting());
95 }
96
97 private:
98 double milliseconds_per_frame_;
99 bool is_ready_;
100 base::WeakPtrFactory<ExternalBeginFrameSourceForTest> weak_ptr_factory_;
101 };
59 102
60 // Adapts ThreadProxy for test. Injects test hooks for testing. 103 // Adapts ThreadProxy for test. Injects test hooks for testing.
61 class ThreadProxyForTest : public ThreadProxy { 104 class ThreadProxyForTest : public ThreadProxy {
62 public: 105 public:
63 static scoped_ptr<Proxy> Create( 106 static scoped_ptr<Proxy> Create(
64 TestHooks* test_hooks, 107 TestHooks* test_hooks,
65 LayerTreeHost* host, 108 LayerTreeHost* host,
66 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 109 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
67 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { 110 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
111 scoped_ptr<BeginFrameSource> external_begin_frame_source) {
68 return make_scoped_ptr(new ThreadProxyForTest( 112 return make_scoped_ptr(new ThreadProxyForTest(
69 test_hooks, host, main_task_runner, impl_task_runner)); 113 test_hooks,
114 host,
115 main_task_runner,
116 impl_task_runner,
117 external_begin_frame_source.Pass()));
70 } 118 }
71 119
72 ~ThreadProxyForTest() override {} 120 ~ThreadProxyForTest() override {}
73 121
74 void test() { 122 void test() {
75 test_hooks_->Layout(); 123 test_hooks_->Layout();
76 } 124 }
77 125
78 private: 126 private:
79 TestHooks* test_hooks_; 127 TestHooks* test_hooks_;
(...skipping 22 matching lines...) Expand all
102 150
103 void ScheduledActionBeginOutputSurfaceCreation() override { 151 void ScheduledActionBeginOutputSurfaceCreation() override {
104 ThreadProxy::ScheduledActionBeginOutputSurfaceCreation(); 152 ThreadProxy::ScheduledActionBeginOutputSurfaceCreation();
105 test_hooks_->ScheduledActionBeginOutputSurfaceCreation(); 153 test_hooks_->ScheduledActionBeginOutputSurfaceCreation();
106 } 154 }
107 155
108 ThreadProxyForTest( 156 ThreadProxyForTest(
109 TestHooks* test_hooks, 157 TestHooks* test_hooks,
110 LayerTreeHost* host, 158 LayerTreeHost* host,
111 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 159 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
112 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) 160 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
113 : ThreadProxy(host, main_task_runner, impl_task_runner), 161 scoped_ptr<BeginFrameSource> external_begin_frame_source)
162 : ThreadProxy(host, main_task_runner,
163 impl_task_runner,
164 external_begin_frame_source.Pass()),
114 test_hooks_(test_hooks) {} 165 test_hooks_(test_hooks) {}
115 }; 166 };
116 167
117 // Adapts LayerTreeHostImpl for test. Runs real code, then invokes test hooks. 168 // Adapts LayerTreeHostImpl for test. Runs real code, then invokes test hooks.
118 class LayerTreeHostImplForTesting : public LayerTreeHostImpl { 169 class LayerTreeHostImplForTesting : public LayerTreeHostImpl {
119 public: 170 public:
120 static scoped_ptr<LayerTreeHostImplForTesting> Create( 171 static scoped_ptr<LayerTreeHostImplForTesting> Create(
121 TestHooks* test_hooks, 172 TestHooks* test_hooks,
122 const LayerTreeSettings& settings, 173 const LayerTreeSettings& settings,
123 LayerTreeHostImplClient* host_impl_client, 174 LayerTreeHostImplClient* host_impl_client,
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 void ReclaimResources(const CompositorFrameAck* ack) override { 258 void ReclaimResources(const CompositorFrameAck* ack) override {
208 LayerTreeHostImpl::ReclaimResources(ack); 259 LayerTreeHostImpl::ReclaimResources(ack);
209 } 260 }
210 261
211 void UpdateVisibleTiles() override { 262 void UpdateVisibleTiles() override {
212 LayerTreeHostImpl::UpdateVisibleTiles(); 263 LayerTreeHostImpl::UpdateVisibleTiles();
213 test_hooks_->UpdateVisibleTilesOnThread(this); 264 test_hooks_->UpdateVisibleTilesOnThread(this);
214 } 265 }
215 266
216 void NotifyReadyToActivate() override { 267 void NotifyReadyToActivate() override {
217 if (block_notify_ready_to_activate_for_testing_) 268 if (block_notify_ready_to_activate_for_testing_) {
218 notify_ready_to_activate_was_blocked_ = true; 269 notify_ready_to_activate_was_blocked_ = true;
219 else 270 } else {
220 client_->NotifyReadyToActivate(); 271 client_->NotifyReadyToActivate();
272 test_hooks_->NotifyReadyToActivateOnThread(this);
273 }
274 }
275
276 void NotifyReadyToDraw() override {
277 client_->NotifyReadyToDraw();
278 test_hooks_->NotifyReadyToDrawOnThread(this);
221 } 279 }
222 280
223 void BlockNotifyReadyToActivateForTesting(bool block) override { 281 void BlockNotifyReadyToActivateForTesting(bool block) override {
224 CHECK(settings().impl_side_painting); 282 CHECK(settings().impl_side_painting);
225 CHECK(proxy()->ImplThreadTaskRunner()) 283 CHECK(proxy()->ImplThreadTaskRunner())
226 << "Not supported for single-threaded mode."; 284 << "Not supported for single-threaded mode.";
227 block_notify_ready_to_activate_for_testing_ = block; 285 block_notify_ready_to_activate_for_testing_ = block;
228 if (!block && notify_ready_to_activate_was_blocked_) { 286 if (!block && notify_ready_to_activate_was_blocked_) {
229 NotifyReadyToActivate(); 287 NotifyReadyToActivate();
230 notify_ready_to_activate_was_blocked_ = false; 288 notify_ready_to_activate_was_blocked_ = false;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 active_animation_controllers().begin(); 320 active_animation_controllers().begin();
263 for (; iter != active_animation_controllers().end(); ++iter) { 321 for (; iter != active_animation_controllers().end(); ++iter) {
264 if (iter->second->HasActiveAnimation()) { 322 if (iter->second->HasActiveAnimation()) {
265 has_unfinished_animation = true; 323 has_unfinished_animation = true;
266 break; 324 break;
267 } 325 }
268 } 326 }
269 test_hooks_->UpdateAnimationState(this, has_unfinished_animation); 327 test_hooks_->UpdateAnimationState(this, has_unfinished_animation);
270 } 328 }
271 329
272 base::TimeDelta LowFrequencyAnimationInterval() const override {
273 return test_hooks_->LowFrequencyAnimationInterval();
274 }
275
276 private: 330 private:
277 TestHooks* test_hooks_; 331 TestHooks* test_hooks_;
278 bool block_notify_ready_to_activate_for_testing_; 332 bool block_notify_ready_to_activate_for_testing_;
279 bool notify_ready_to_activate_was_blocked_; 333 bool notify_ready_to_activate_was_blocked_;
280 }; 334 };
281 335
282 // Implementation of LayerTreeHost callback interface. 336 // Implementation of LayerTreeHost callback interface.
283 class LayerTreeHostClientForTesting : public LayerTreeHostClient, 337 class LayerTreeHostClientForTesting : public LayerTreeHostClient,
284 public LayerTreeHostSingleThreadClient { 338 public LayerTreeHostSingleThreadClient {
285 public: 339 public:
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 }; 408 };
355 409
356 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting. 410 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting.
357 class LayerTreeHostForTesting : public LayerTreeHost { 411 class LayerTreeHostForTesting : public LayerTreeHost {
358 public: 412 public:
359 static scoped_ptr<LayerTreeHostForTesting> Create( 413 static scoped_ptr<LayerTreeHostForTesting> Create(
360 TestHooks* test_hooks, 414 TestHooks* test_hooks,
361 LayerTreeHostClientForTesting* client, 415 LayerTreeHostClientForTesting* client,
362 const LayerTreeSettings& settings, 416 const LayerTreeSettings& settings,
363 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 417 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
364 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { 418 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
419 scoped_ptr<BeginFrameSource> external_begin_frame_source) {
365 scoped_ptr<LayerTreeHostForTesting> layer_tree_host( 420 scoped_ptr<LayerTreeHostForTesting> layer_tree_host(
366 new LayerTreeHostForTesting(test_hooks, client, settings)); 421 new LayerTreeHostForTesting(test_hooks, client, settings));
367 if (impl_task_runner.get()) { 422 if (impl_task_runner.get()) {
368 layer_tree_host->InitializeForTesting( 423 layer_tree_host->InitializeForTesting(
369 ThreadProxyForTest::Create(test_hooks, 424 ThreadProxyForTest::Create(test_hooks,
370 layer_tree_host.get(), 425 layer_tree_host.get(),
371 main_task_runner, 426 main_task_runner,
372 impl_task_runner)); 427 impl_task_runner,
428 external_begin_frame_source.Pass()));
373 } else { 429 } else {
374 layer_tree_host->InitializeForTesting(SingleThreadProxy::Create( 430 layer_tree_host->InitializeForTesting(SingleThreadProxy::Create(
375 layer_tree_host.get(), client, main_task_runner)); 431 layer_tree_host.get(),
432 client,
433 main_task_runner,
434 external_begin_frame_source.Pass()));
376 } 435 }
377 return layer_tree_host.Pass(); 436 return layer_tree_host.Pass();
378 } 437 }
379 438
380 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl( 439 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl(
381 LayerTreeHostImplClient* host_impl_client) override { 440 LayerTreeHostImplClient* host_impl_client) override {
382 return LayerTreeHostImplForTesting::Create( 441 return LayerTreeHostImplForTesting::Create(
383 test_hooks_, 442 test_hooks_,
384 settings(), 443 settings(),
385 host_impl_client, 444 host_impl_client,
(...skipping 24 matching lines...) Expand all
410 test_started_(false) {} 469 test_started_(false) {}
411 470
412 scoped_ptr<TestSharedBitmapManager> shared_bitmap_manager_; 471 scoped_ptr<TestSharedBitmapManager> shared_bitmap_manager_;
413 scoped_ptr<TestGpuMemoryBufferManager> gpu_memory_buffer_manager_; 472 scoped_ptr<TestGpuMemoryBufferManager> gpu_memory_buffer_manager_;
414 TestHooks* test_hooks_; 473 TestHooks* test_hooks_;
415 bool test_started_; 474 bool test_started_;
416 }; 475 };
417 476
418 LayerTreeTest::LayerTreeTest() 477 LayerTreeTest::LayerTreeTest()
419 : output_surface_(nullptr), 478 : output_surface_(nullptr),
479 external_begin_frame_source_(nullptr),
420 beginning_(false), 480 beginning_(false),
421 end_when_begin_returns_(false), 481 end_when_begin_returns_(false),
422 timed_out_(false), 482 timed_out_(false),
423 scheduled_(false), 483 scheduled_(false),
424 started_(false), 484 started_(false),
425 ended_(false), 485 ended_(false),
426 delegating_renderer_(false), 486 delegating_renderer_(false),
427 timeout_seconds_(0), 487 timeout_seconds_(0),
428 weak_factory_(this) { 488 weak_factory_(this) {
429 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr(); 489 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr();
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 main_thread_weak_ptr_)); 599 main_thread_weak_ptr_));
540 } 600 }
541 601
542 void LayerTreeTest::WillBeginTest() { 602 void LayerTreeTest::WillBeginTest() {
543 layer_tree_host_->SetLayerTreeHostClientReady(); 603 layer_tree_host_->SetLayerTreeHostClientReady();
544 } 604 }
545 605
546 void LayerTreeTest::DoBeginTest() { 606 void LayerTreeTest::DoBeginTest() {
547 client_ = LayerTreeHostClientForTesting::Create(this); 607 client_ = LayerTreeHostClientForTesting::Create(this);
548 608
609 scoped_ptr<ExternalBeginFrameSourceForTest> external_begin_frame_source;
610 if (settings_.use_external_begin_frame_source &&
611 settings_.throttle_frame_production) {
612 external_begin_frame_source.reset(
613 new ExternalBeginFrameSourceForTest(settings_.refresh_rate));
614 external_begin_frame_source_ = external_begin_frame_source.get();
615 }
616
549 DCHECK(!impl_thread_ || impl_thread_->message_loop_proxy().get()); 617 DCHECK(!impl_thread_ || impl_thread_->message_loop_proxy().get());
550 layer_tree_host_ = LayerTreeHostForTesting::Create( 618 layer_tree_host_ = LayerTreeHostForTesting::Create(
551 this, 619 this,
552 client_.get(), 620 client_.get(),
553 settings_, 621 settings_,
554 base::MessageLoopProxy::current(), 622 base::MessageLoopProxy::current(),
555 impl_thread_ ? impl_thread_->message_loop_proxy() : NULL); 623 impl_thread_ ? impl_thread_->message_loop_proxy() : NULL,
624 external_begin_frame_source.Pass());
556 ASSERT_TRUE(layer_tree_host_); 625 ASSERT_TRUE(layer_tree_host_);
557 626
558 started_ = true; 627 started_ = true;
559 beginning_ = true; 628 beginning_ = true;
560 SetupTree(); 629 SetupTree();
561 WillBeginTest(); 630 WillBeginTest();
562 BeginTest(); 631 BeginTest();
563 beginning_ = false; 632 beginning_ = false;
564 if (end_when_begin_returns_) 633 if (end_when_begin_returns_)
565 RealEndTest(); 634 RealEndTest();
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 ASSERT_TRUE(impl_thread_->Start()); 737 ASSERT_TRUE(impl_thread_->Start());
669 } 738 }
670 739
671 main_task_runner_ = base::MessageLoopProxy::current(); 740 main_task_runner_ = base::MessageLoopProxy::current();
672 741
673 delegating_renderer_ = delegating_renderer; 742 delegating_renderer_ = delegating_renderer;
674 743
675 // Spend less time waiting for BeginFrame because the output is 744 // Spend less time waiting for BeginFrame because the output is
676 // mocked out. 745 // mocked out.
677 settings_.refresh_rate = 200.0; 746 settings_.refresh_rate = 200.0;
747 settings_.background_animation_rate = 200.0;
678 settings_.impl_side_painting = impl_side_painting; 748 settings_.impl_side_painting = impl_side_painting;
679 InitializeSettings(&settings_); 749 InitializeSettings(&settings_);
680 750
681 main_task_runner_->PostTask( 751 main_task_runner_->PostTask(
682 FROM_HERE, 752 FROM_HERE,
683 base::Bind(&LayerTreeTest::DoBeginTest, base::Unretained(this))); 753 base::Bind(&LayerTreeTest::DoBeginTest, base::Unretained(this)));
684 754
685 if (timeout_seconds_) { 755 if (timeout_seconds_) {
686 timeout_.Reset(base::Bind(&LayerTreeTest::Timeout, base::Unretained(this))); 756 timeout_.Reset(base::Bind(&LayerTreeTest::Timeout, base::Unretained(this)));
687 main_task_runner_->PostDelayedTask( 757 main_task_runner_->PostDelayedTask(
(...skipping 25 matching lines...) Expand all
713 } 783 }
714 784
715 scoped_ptr<OutputSurface> LayerTreeTest::CreateOutputSurface(bool fallback) { 785 scoped_ptr<OutputSurface> LayerTreeTest::CreateOutputSurface(bool fallback) {
716 scoped_ptr<FakeOutputSurface> output_surface = 786 scoped_ptr<FakeOutputSurface> output_surface =
717 CreateFakeOutputSurface(fallback); 787 CreateFakeOutputSurface(fallback);
718 if (output_surface) { 788 if (output_surface) {
719 DCHECK_EQ(delegating_renderer_, 789 DCHECK_EQ(delegating_renderer_,
720 output_surface->capabilities().delegated_rendering); 790 output_surface->capabilities().delegated_rendering);
721 } 791 }
722 output_surface_ = output_surface.get(); 792 output_surface_ = output_surface.get();
793
794 if (settings_.use_external_begin_frame_source &&
795 settings_.throttle_frame_production) {
796 DCHECK(external_begin_frame_source_);
797 DCHECK(external_begin_frame_source_->is_ready());
798 }
723 return output_surface.Pass(); 799 return output_surface.Pass();
724 } 800 }
725 801
726 scoped_ptr<FakeOutputSurface> LayerTreeTest::CreateFakeOutputSurface( 802 scoped_ptr<FakeOutputSurface> LayerTreeTest::CreateFakeOutputSurface(
727 bool fallback) { 803 bool fallback) {
728 if (delegating_renderer_) 804 if (delegating_renderer_)
729 return FakeOutputSurface::CreateDelegating3d(); 805 return FakeOutputSurface::CreateDelegating3d();
730 else 806 else
731 return FakeOutputSurface::Create3d(); 807 return FakeOutputSurface::Create3d();
732 } 808 }
(...skipping 13 matching lines...) Expand all
746 return -1; 822 return -1;
747 } 823 }
748 824
749 void LayerTreeTest::DestroyLayerTreeHost() { 825 void LayerTreeTest::DestroyLayerTreeHost() {
750 if (layer_tree_host_ && layer_tree_host_->root_layer()) 826 if (layer_tree_host_ && layer_tree_host_->root_layer())
751 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL); 827 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL);
752 layer_tree_host_ = nullptr; 828 layer_tree_host_ = nullptr;
753 } 829 }
754 830
755 } // namespace cc 831 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/layer_tree_test.h ('k') | cc/test/scheduler_test_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698