| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index eef1cc37caed94f1f2e6f06709a781fc32531a7d..eddbc60b09655a7594d09a16f089205f8d945bee 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -916,6 +916,8 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
|
| }
|
|
|
| void LayerTreeHostImpl::MainThreadHasStoppedFlinging() {
|
| + if (top_controls_manager_)
|
| + top_controls_manager_->MainThreadHasStoppedFlinging();
|
| if (input_handler_client_)
|
| input_handler_client_->MainThreadHasStoppedFlinging();
|
| }
|
| @@ -3112,6 +3114,19 @@ void LayerTreeHostImpl::AnimateTopControls(base::TimeTicks time) {
|
| client_->RenewTreePriority();
|
| }
|
|
|
| +void LayerTreeHostImpl::AnimateScrollbars(base::TimeTicks monotonic_time) {
|
| + if (scrollbar_animation_controllers_.empty())
|
| + return;
|
| +
|
| + TRACE_EVENT0("cc", "LayerTreeHostImpl::AnimateScrollbars");
|
| + std::set<ScrollbarAnimationController*> controllers_copy =
|
| + scrollbar_animation_controllers_;
|
| + for (auto& it : controllers_copy)
|
| + it->Animate(monotonic_time);
|
| +
|
| + SetNeedsAnimate();
|
| +}
|
| +
|
| void LayerTreeHostImpl::AnimateLayers(base::TimeTicks monotonic_time) {
|
| if (!settings_.accelerated_animation_enabled ||
|
| !needs_animate_layers() ||
|
| @@ -3119,31 +3134,26 @@ void LayerTreeHostImpl::AnimateLayers(base::TimeTicks monotonic_time) {
|
| return;
|
|
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::AnimateLayers");
|
| - AnimationRegistrar::AnimationControllerMap copy =
|
| + AnimationRegistrar::AnimationControllerMap controllers_copy =
|
| animation_registrar_->active_animation_controllers();
|
| - for (AnimationRegistrar::AnimationControllerMap::iterator iter = copy.begin();
|
| - iter != copy.end();
|
| - ++iter)
|
| - (*iter).second->Animate(monotonic_time);
|
| + for (auto& it : controllers_copy)
|
| + it.second->Animate(monotonic_time);
|
|
|
| SetNeedsAnimate();
|
| }
|
|
|
| void LayerTreeHostImpl::UpdateAnimationState(bool start_ready_animations) {
|
| - if (!settings_.accelerated_animation_enabled ||
|
| - !needs_animate_layers() ||
|
| + if (!settings_.accelerated_animation_enabled || !needs_animate_layers() ||
|
| !active_tree_->root_layer())
|
| return;
|
|
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::UpdateAnimationState");
|
| scoped_ptr<AnimationEventsVector> events =
|
| make_scoped_ptr(new AnimationEventsVector);
|
| - AnimationRegistrar::AnimationControllerMap copy =
|
| + AnimationRegistrar::AnimationControllerMap active_controllers_copy =
|
| animation_registrar_->active_animation_controllers();
|
| - for (AnimationRegistrar::AnimationControllerMap::iterator iter = copy.begin();
|
| - iter != copy.end();
|
| - ++iter)
|
| - (*iter).second->UpdateState(start_ready_animations, events.get());
|
| + for (auto& it : active_controllers_copy)
|
| + it.second->UpdateState(start_ready_animations, events.get());
|
|
|
| if (!events->empty()) {
|
| client_->PostAnimationEventsToMainThreadOnImplThread(events.Pass());
|
| @@ -3158,12 +3168,10 @@ void LayerTreeHostImpl::ActivateAnimations() {
|
| return;
|
|
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::ActivateAnimations");
|
| - AnimationRegistrar::AnimationControllerMap copy =
|
| + AnimationRegistrar::AnimationControllerMap active_controllers_copy =
|
| animation_registrar_->active_animation_controllers();
|
| - for (AnimationRegistrar::AnimationControllerMap::iterator iter = copy.begin();
|
| - iter != copy.end();
|
| - ++iter)
|
| - (*iter).second->ActivateAnimations();
|
| + for (auto& it : active_controllers_copy)
|
| + it.second->ActivateAnimations();
|
|
|
| SetNeedsAnimate();
|
| }
|
| @@ -3182,36 +3190,25 @@ int LayerTreeHostImpl::SourceAnimationFrameNumber() const {
|
| return fps_counter_->current_frame_number();
|
| }
|
|
|
| -void LayerTreeHostImpl::AnimateScrollbars(base::TimeTicks time) {
|
| - AnimateScrollbarsRecursive(active_tree_->root_layer(), time);
|
| +void LayerTreeHostImpl::StartAnimatingScrollbarAnimationController(
|
| + ScrollbarAnimationController* controller) {
|
| + scrollbar_animation_controllers_.insert(controller);
|
| + SetNeedsAnimate();
|
| }
|
|
|
| -void LayerTreeHostImpl::AnimateScrollbarsRecursive(LayerImpl* layer,
|
| - base::TimeTicks time) {
|
| - if (!layer)
|
| - return;
|
| -
|
| - ScrollbarAnimationController* scrollbar_controller =
|
| - layer->scrollbar_animation_controller();
|
| - if (scrollbar_controller)
|
| - scrollbar_controller->Animate(time);
|
| -
|
| - for (size_t i = 0; i < layer->children().size(); ++i)
|
| - AnimateScrollbarsRecursive(layer->children()[i], time);
|
| +void LayerTreeHostImpl::StopAnimatingScrollbarAnimationController(
|
| + ScrollbarAnimationController* controller) {
|
| + scrollbar_animation_controllers_.erase(controller);
|
| }
|
|
|
| -void LayerTreeHostImpl::PostDelayedScrollbarFade(
|
| - const base::Closure& start_fade,
|
| +void LayerTreeHostImpl::PostDelayedScrollbarAnimationTask(
|
| + const base::Closure& task,
|
| base::TimeDelta delay) {
|
| - client_->PostDelayedScrollbarFadeOnImplThread(start_fade, delay);
|
| + client_->PostDelayedAnimationTaskOnImplThread(task, delay);
|
| }
|
|
|
| -void LayerTreeHostImpl::SetNeedsScrollbarAnimationFrame() {
|
| - TRACE_EVENT_INSTANT0(
|
| - "cc",
|
| - "LayerTreeHostImpl::SetNeedsRedraw due to scrollbar fade",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| - SetNeedsAnimate();
|
| +void LayerTreeHostImpl::SetNeedsRedrawForScrollbarAnimation() {
|
| + SetNeedsRedraw();
|
| }
|
|
|
| void LayerTreeHostImpl::SetTreePriority(TreePriority priority) {
|
|
|