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

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

Issue 231133002: CC::Animations should use TimeTicks & TimeDelta to represent time (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Code Refactored as per the comments. Created 6 years, 8 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
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 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 2703 matching lines...) Expand 10 before | Expand all | Expand 10 after
2714 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); 2714 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta);
2715 2715
2716 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer())) 2716 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer()))
2717 InnerViewportScrollLayer()->ScrollBy(unused_delta); 2717 InnerViewportScrollLayer()->ScrollBy(unused_delta);
2718 } 2718 }
2719 2719
2720 void LayerTreeHostImpl::AnimatePageScale(base::TimeTicks monotonic_time) { 2720 void LayerTreeHostImpl::AnimatePageScale(base::TimeTicks monotonic_time) {
2721 if (!page_scale_animation_) 2721 if (!page_scale_animation_)
2722 return; 2722 return;
2723 2723
2724 // TODO(ajuma): http://crbug.com/178171 - Animations use double for monotonic
2725 // time.
2726 double monotonic_time_for_cc_animations =
2727 (monotonic_time - base::TimeTicks()).InSecondsF();
2728 gfx::Vector2dF scroll_total = active_tree_->TotalScrollOffset(); 2724 gfx::Vector2dF scroll_total = active_tree_->TotalScrollOffset();
2729 2725
2730 if (!page_scale_animation_->IsAnimationStarted()) 2726 if (!page_scale_animation_->IsAnimationStarted())
2731 page_scale_animation_->StartAnimation(monotonic_time_for_cc_animations); 2727 page_scale_animation_->StartAnimation(monotonic_time);
2732 2728
2733 active_tree_->SetPageScaleDelta(page_scale_animation_->PageScaleFactorAtTime( 2729 active_tree_->SetPageScaleDelta(
2734 monotonic_time_for_cc_animations) / 2730 page_scale_animation_->PageScaleFactorAtTime(monotonic_time) /
2735 active_tree_->page_scale_factor()); 2731 active_tree_->page_scale_factor());
2736 gfx::Vector2dF next_scroll = page_scale_animation_->ScrollOffsetAtTime( 2732 gfx::Vector2dF next_scroll =
2737 monotonic_time_for_cc_animations); 2733 page_scale_animation_->ScrollOffsetAtTime(monotonic_time);
2738 2734
2739 ScrollViewportBy(next_scroll - scroll_total); 2735 ScrollViewportBy(next_scroll - scroll_total);
2740 SetNeedsRedraw(); 2736 SetNeedsRedraw();
2741 2737
2742 if (page_scale_animation_->IsAnimationCompleteAtTime( 2738 if (page_scale_animation_->IsAnimationCompleteAtTime(monotonic_time)) {
2743 monotonic_time_for_cc_animations)) {
2744 page_scale_animation_.reset(); 2739 page_scale_animation_.reset();
2745 client_->SetNeedsCommitOnImplThread(); 2740 client_->SetNeedsCommitOnImplThread();
2746 client_->RenewTreePriority(); 2741 client_->RenewTreePriority();
2747 } 2742 }
2748 } 2743 }
2749 2744
2750 void LayerTreeHostImpl::AnimateTopControls(base::TimeTicks time) { 2745 void LayerTreeHostImpl::AnimateTopControls(base::TimeTicks time) {
2751 if (!top_controls_manager_ || !top_controls_manager_->animation()) 2746 if (!top_controls_manager_ || !top_controls_manager_->animation())
2752 return; 2747 return;
2753 gfx::Vector2dF scroll = top_controls_manager_->Animate(time); 2748 gfx::Vector2dF scroll = top_controls_manager_->Animate(time);
2754 if (active_tree_->TotalScrollOffset().y() == 0.f) 2749 if (active_tree_->TotalScrollOffset().y() == 0.f)
2755 return; 2750 return;
2756 if (scroll.IsZero()) { 2751 if (scroll.IsZero()) {
2757 // This may happen on the first animation step. Force redraw otherwise 2752 // This may happen on the first animation step. Force redraw otherwise
2758 // the animation would stop because of no new frames. 2753 // the animation would stop because of no new frames.
2759 SetNeedsRedraw(); 2754 SetNeedsRedraw();
2760 } else { 2755 } else {
2761 ScrollViewportBy(gfx::ScaleVector2d( 2756 ScrollViewportBy(gfx::ScaleVector2d(
2762 scroll, 1.f / active_tree_->total_page_scale_factor())); 2757 scroll, 1.f / active_tree_->total_page_scale_factor()));
2763 } 2758 }
2764 } 2759 }
2765 2760
2766 void LayerTreeHostImpl::AnimateLayers(base::TimeTicks monotonic_time) { 2761 void LayerTreeHostImpl::AnimateLayers(base::TimeTicks monotonic_time) {
2767 if (!settings_.accelerated_animation_enabled || 2762 if (!settings_.accelerated_animation_enabled ||
2768 !needs_animate_layers() || 2763 !needs_animate_layers() ||
2769 !active_tree_->root_layer()) 2764 !active_tree_->root_layer())
2770 return; 2765 return;
2771 2766
2772 TRACE_EVENT0("cc", "LayerTreeHostImpl::AnimateLayers"); 2767 TRACE_EVENT0("cc", "LayerTreeHostImpl::AnimateLayers");
2773
2774 // TODO(ajuma): http://crbug.com/178171 - Animations use double for monotonic
2775 // time.
2776 double monotonic_time_for_cc_animations =
2777 (monotonic_time - base::TimeTicks()).InSecondsF();
2778 AnimationRegistrar::AnimationControllerMap copy = 2768 AnimationRegistrar::AnimationControllerMap copy =
2779 animation_registrar_->active_animation_controllers(); 2769 animation_registrar_->active_animation_controllers();
2780 for (AnimationRegistrar::AnimationControllerMap::iterator iter = copy.begin(); 2770 for (AnimationRegistrar::AnimationControllerMap::iterator iter = copy.begin();
2781 iter != copy.end(); 2771 iter != copy.end();
2782 ++iter) 2772 ++iter)
2783 (*iter).second->Animate(monotonic_time_for_cc_animations); 2773 (*iter).second->Animate(monotonic_time);
2784 2774
2785 SetNeedsRedraw(); 2775 SetNeedsRedraw();
2786 } 2776 }
2787 2777
2788 void LayerTreeHostImpl::UpdateAnimationState(bool start_ready_animations) { 2778 void LayerTreeHostImpl::UpdateAnimationState(bool start_ready_animations) {
2789 if (!settings_.accelerated_animation_enabled || 2779 if (!settings_.accelerated_animation_enabled ||
2790 !needs_animate_layers() || 2780 !needs_animate_layers() ||
2791 !active_tree_->root_layer()) 2781 !active_tree_->root_layer())
2792 return; 2782 return;
2793 2783
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
3102 swap_promise_monitor_.erase(monitor); 3092 swap_promise_monitor_.erase(monitor);
3103 } 3093 }
3104 3094
3105 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { 3095 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() {
3106 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); 3096 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin();
3107 for (; it != swap_promise_monitor_.end(); it++) 3097 for (; it != swap_promise_monitor_.end(); it++)
3108 (*it)->OnSetNeedsRedrawOnImpl(); 3098 (*it)->OnSetNeedsRedrawOnImpl();
3109 } 3099 }
3110 3100
3111 } // namespace cc 3101 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698