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 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
392 if (EvictedUIResourcesExist()) { | 392 if (EvictedUIResourcesExist()) { |
393 TRACE_EVENT_INSTANT0( | 393 TRACE_EVENT_INSTANT0( |
394 "cc", "LayerTreeHostImpl::CanDraw UI resources evicted not recreated", | 394 "cc", "LayerTreeHostImpl::CanDraw UI resources evicted not recreated", |
395 TRACE_EVENT_SCOPE_THREAD); | 395 TRACE_EVENT_SCOPE_THREAD); |
396 return false; | 396 return false; |
397 } | 397 } |
398 return true; | 398 return true; |
399 } | 399 } |
400 | 400 |
401 void LayerTreeHostImpl::Animate(base::TimeTicks monotonic_time) { | 401 void LayerTreeHostImpl::Animate(base::TimeTicks monotonic_time) { |
402 if (input_handler_client_) | 402 AnimateFling(monotonic_time); |
mkosiba (inactive)
2014/05/15 13:48:51
I don't think we want to call this at all if layer
jdduke (slow)
2014/05/15 14:15:43
Oops yeah that's definitely what I had planned.
| |
403 input_handler_client_->Animate(monotonic_time); | |
404 AnimatePageScale(monotonic_time); | 403 AnimatePageScale(monotonic_time); |
405 AnimateLayers(monotonic_time); | 404 AnimateLayers(monotonic_time); |
406 AnimateScrollbars(monotonic_time); | 405 AnimateScrollbars(monotonic_time); |
407 AnimateTopControls(monotonic_time); | 406 AnimateTopControls(monotonic_time); |
408 } | 407 } |
409 | 408 |
410 void LayerTreeHostImpl::ManageTiles() { | 409 void LayerTreeHostImpl::ManageTiles() { |
411 if (!tile_manager_) | 410 if (!tile_manager_) |
412 return; | 411 return; |
413 if (!tile_priorities_dirty_) | 412 if (!tile_priorities_dirty_) |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
464 page_scale_animation_->ZoomTo(scaled_target_offset, | 463 page_scale_animation_->ZoomTo(scaled_target_offset, |
465 page_scale, | 464 page_scale, |
466 duration.InSecondsF()); | 465 duration.InSecondsF()); |
467 } | 466 } |
468 | 467 |
469 SetNeedsAnimate(); | 468 SetNeedsAnimate(); |
470 client_->SetNeedsCommitOnImplThread(); | 469 client_->SetNeedsCommitOnImplThread(); |
471 client_->RenewTreePriority(); | 470 client_->RenewTreePriority(); |
472 } | 471 } |
473 | 472 |
473 void LayerTreeHostImpl::SetNeedsAnimateFling() { | |
474 if (root_layer_scroll_offset_delegate_ && | |
475 (CurrentlyScrollingLayer() == InnerViewportScrollLayer() || | |
476 CurrentlyScrollingLayer() == OuterViewportScrollLayer())) { | |
477 // Hacky callback approach... | |
478 root_layer_scroll_offset_delegate_->SetNeedsAnimate( | |
479 base::Bind(&LayerTreeHostImpl::AnimateFling, AsWeakPtr())); | |
480 return; | |
481 } | |
482 | |
483 SetNeedsAnimate(); | |
484 } | |
485 | |
474 bool LayerTreeHostImpl::IsCurrentlyScrollingLayerAt( | 486 bool LayerTreeHostImpl::IsCurrentlyScrollingLayerAt( |
475 const gfx::Point& viewport_point, | 487 const gfx::Point& viewport_point, |
476 InputHandler::ScrollInputType type) { | 488 InputHandler::ScrollInputType type) { |
477 if (!CurrentlyScrollingLayer()) | 489 if (!CurrentlyScrollingLayer()) |
478 return false; | 490 return false; |
479 | 491 |
480 if (!EnsureRenderSurfaceLayerList()) | 492 if (!EnsureRenderSurfaceLayerList()) |
481 return false; | 493 return false; |
482 | 494 |
483 gfx::PointF device_viewport_point = | 495 gfx::PointF device_viewport_point = |
(...skipping 2267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2751 LayerImpl* scroll_layer = OuterViewportScrollLayer() | 2763 LayerImpl* scroll_layer = OuterViewportScrollLayer() |
2752 ? OuterViewportScrollLayer() | 2764 ? OuterViewportScrollLayer() |
2753 : InnerViewportScrollLayer(); | 2765 : InnerViewportScrollLayer(); |
2754 | 2766 |
2755 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); | 2767 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); |
2756 | 2768 |
2757 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer())) | 2769 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer())) |
2758 InnerViewportScrollLayer()->ScrollBy(unused_delta); | 2770 InnerViewportScrollLayer()->ScrollBy(unused_delta); |
2759 } | 2771 } |
2760 | 2772 |
2773 void LayerTreeHostImpl::AnimateFling(base::TimeTicks monotonic_time) { | |
2774 DCHECK(proxy_->IsImplThread()); | |
2775 if (input_handler_client_) | |
2776 input_handler_client_->AnimateFling(monotonic_time); | |
2777 } | |
2778 | |
2761 void LayerTreeHostImpl::AnimatePageScale(base::TimeTicks monotonic_time) { | 2779 void LayerTreeHostImpl::AnimatePageScale(base::TimeTicks monotonic_time) { |
2762 if (!page_scale_animation_) | 2780 if (!page_scale_animation_) |
2763 return; | 2781 return; |
2764 | 2782 |
2765 // TODO(ajuma): http://crbug.com/178171 - Animations use double for monotonic | 2783 // TODO(ajuma): http://crbug.com/178171 - Animations use double for monotonic |
2766 // time. | 2784 // time. |
2767 double monotonic_time_for_cc_animations = | 2785 double monotonic_time_for_cc_animations = |
2768 (monotonic_time - base::TimeTicks()).InSecondsF(); | 2786 (monotonic_time - base::TimeTicks()).InSecondsF(); |
2769 gfx::Vector2dF scroll_total = active_tree_->TotalScrollOffset(); | 2787 gfx::Vector2dF scroll_total = active_tree_->TotalScrollOffset(); |
2770 | 2788 |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3119 swap_promise_monitor_.erase(monitor); | 3137 swap_promise_monitor_.erase(monitor); |
3120 } | 3138 } |
3121 | 3139 |
3122 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 3140 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
3123 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 3141 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
3124 for (; it != swap_promise_monitor_.end(); it++) | 3142 for (; it != swap_promise_monitor_.end(); it++) |
3125 (*it)->OnSetNeedsRedrawOnImpl(); | 3143 (*it)->OnSetNeedsRedrawOnImpl(); |
3126 } | 3144 } |
3127 | 3145 |
3128 } // namespace cc | 3146 } // namespace cc |
OLD | NEW |