| OLD | NEW | 
|---|
| 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  Loading... | 
| 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  Loading... | 
| 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 | 
| OLD | NEW | 
|---|