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

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 23593003: cc: Avoid updating animations in the background without an active tree (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: nits Created 7 years, 3 months 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.cc ('k') | cc/trees/layer_tree_host_unittest_animation.cc » ('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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 bool start_ready_animations = true; 121 bool start_ready_animations = true;
122 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations); 122 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations);
123 layer_tree_host_impl_->ResetCurrentFrameTimeForNextFrame(); 123 layer_tree_host_impl_->ResetCurrentFrameTimeForNextFrame();
124 } 124 }
125 125
126 void SetActive(bool active) { 126 void SetActive(bool active) {
127 if (active != time_source_->Active()) 127 if (active != time_source_->Active())
128 time_source_->SetActive(active); 128 time_source_->SetActive(active);
129 } 129 }
130 130
131 bool Active() const { return time_source_->Active(); }
132
131 private: 133 private:
132 LayerTreeHostImplTimeSourceAdapter( 134 LayerTreeHostImplTimeSourceAdapter(
133 LayerTreeHostImpl* layer_tree_host_impl, 135 LayerTreeHostImpl* layer_tree_host_impl,
134 scoped_refptr<DelayBasedTimeSource> time_source) 136 scoped_refptr<DelayBasedTimeSource> time_source)
135 : layer_tree_host_impl_(layer_tree_host_impl), 137 : layer_tree_host_impl_(layer_tree_host_impl),
136 time_source_(time_source) { 138 time_source_(time_source) {
137 time_source_->SetClient(this); 139 time_source_->SetClient(this);
138 } 140 }
139 141
140 LayerTreeHostImpl* layer_tree_host_impl_; 142 LayerTreeHostImpl* layer_tree_host_impl_;
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 pending_tree()->ApplyScrollDeltasSinceBeginFrame(); 251 pending_tree()->ApplyScrollDeltasSinceBeginFrame();
250 pending_tree_->set_needs_update_draw_properties(); 252 pending_tree_->set_needs_update_draw_properties();
251 pending_tree_->UpdateDrawProperties(); 253 pending_tree_->UpdateDrawProperties();
252 // Start working on newly created tiles immediately if needed. 254 // Start working on newly created tiles immediately if needed.
253 if (!tile_manager_ || !manage_tiles_needed_) 255 if (!tile_manager_ || !manage_tiles_needed_)
254 NotifyReadyToActivate(); 256 NotifyReadyToActivate();
255 else 257 else
256 ManageTiles(); 258 ManageTiles();
257 } else { 259 } else {
258 active_tree_->set_needs_update_draw_properties(); 260 active_tree_->set_needs_update_draw_properties();
261 if (time_source_client_adapter_ && time_source_client_adapter_->Active())
262 DCHECK(active_tree_->root_layer());
259 } 263 }
260 264
261 client_->SendManagedMemoryStats(); 265 client_->SendManagedMemoryStats();
262 } 266 }
263 267
264 bool LayerTreeHostImpl::CanDraw() const { 268 bool LayerTreeHostImpl::CanDraw() const {
265 // Note: If you are changing this function or any other function that might 269 // Note: If you are changing this function or any other function that might
266 // affect the result of CanDraw, make sure to call 270 // affect the result of CanDraw, make sure to call
267 // client_->OnCanDrawStateChanged in the proper places and update the 271 // client_->OnCanDrawStateChanged in the proper places and update the
268 // NotifyIfCanDrawChanged test. 272 // NotifyIfCanDrawChanged test.
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 } 822 }
819 823
820 void LayerTreeHostImpl::MainThreadHasStoppedFlinging() { 824 void LayerTreeHostImpl::MainThreadHasStoppedFlinging() {
821 if (input_handler_client_) 825 if (input_handler_client_)
822 input_handler_client_->MainThreadHasStoppedFlinging(); 826 input_handler_client_->MainThreadHasStoppedFlinging();
823 } 827 }
824 828
825 void LayerTreeHostImpl::UpdateBackgroundAnimateTicking( 829 void LayerTreeHostImpl::UpdateBackgroundAnimateTicking(
826 bool should_background_tick) { 830 bool should_background_tick) {
827 DCHECK(proxy_->IsImplThread()); 831 DCHECK(proxy_->IsImplThread());
832 if (should_background_tick)
833 DCHECK(active_tree_->root_layer());
828 834
829 bool enabled = should_background_tick && 835 bool enabled = should_background_tick &&
830 !animation_registrar_->active_animation_controllers().empty(); 836 !animation_registrar_->active_animation_controllers().empty();
831 837
832 // Lazily create the time_source adapter so that we can vary the interval for 838 // Lazily create the time_source adapter so that we can vary the interval for
833 // testing. 839 // testing.
834 if (!time_source_client_adapter_) { 840 if (!time_source_client_adapter_) {
835 time_source_client_adapter_ = LayerTreeHostImplTimeSourceAdapter::Create( 841 time_source_client_adapter_ = LayerTreeHostImplTimeSourceAdapter::Create(
836 this, 842 this,
837 DelayBasedTimeSource::Create( 843 DelayBasedTimeSource::Create(
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
1496 const RenderingStats& stats = 1502 const RenderingStats& stats =
1497 rendering_stats_instrumentation_->GetRenderingStats(); 1503 rendering_stats_instrumentation_->GetRenderingStats();
1498 paint_time_counter_->SavePaintTime( 1504 paint_time_counter_->SavePaintTime(
1499 stats.main_stats.paint_time + stats.main_stats.record_time + 1505 stats.main_stats.paint_time + stats.main_stats.record_time +
1500 stats.impl_stats.rasterize_time_for_now_bins_on_pending_tree); 1506 stats.impl_stats.rasterize_time_for_now_bins_on_pending_tree);
1501 } 1507 }
1502 1508
1503 client_->DidActivatePendingTree(); 1509 client_->DidActivatePendingTree();
1504 if (!tree_activation_callback_.is_null()) 1510 if (!tree_activation_callback_.is_null())
1505 tree_activation_callback_.Run(); 1511 tree_activation_callback_.Run();
1512
1513 if (time_source_client_adapter_ && time_source_client_adapter_->Active())
1514 DCHECK(active_tree_->root_layer());
1506 } 1515 }
1507 1516
1508 void LayerTreeHostImpl::SetVisible(bool visible) { 1517 void LayerTreeHostImpl::SetVisible(bool visible) {
1509 DCHECK(proxy_->IsImplThread()); 1518 DCHECK(proxy_->IsImplThread());
1510 1519
1511 if (visible_ == visible) 1520 if (visible_ == visible)
1512 return; 1521 return;
1513 visible_ = visible; 1522 visible_ = visible;
1514 DidVisibilityChange(this, visible_); 1523 DidVisibilityChange(this, visible_);
1515 EnforceManagedMemoryPolicy(ActualManagedMemoryPolicy()); 1524 EnforceManagedMemoryPolicy(ActualManagedMemoryPolicy());
(...skipping 1052 matching lines...) Expand 10 before | Expand all | Expand 10 after
2568 2577
2569 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource( 2578 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource(
2570 UIResourceId uid) const { 2579 UIResourceId uid) const {
2571 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid); 2580 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid);
2572 if (iter != ui_resource_map_.end()) 2581 if (iter != ui_resource_map_.end())
2573 return iter->second; 2582 return iter->second;
2574 return 0; 2583 return 0;
2575 } 2584 }
2576 2585
2577 } // namespace cc 2586 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/layer_tree_test.cc ('k') | cc/trees/layer_tree_host_unittest_animation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698