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/layer_tree_host_impl.h" | 5 #include "cc/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/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 1542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1553 | 1553 |
1554 void LayerTreeHostImpl::ClearCurrentlyScrollingLayer() { | 1554 void LayerTreeHostImpl::ClearCurrentlyScrollingLayer() { |
1555 active_tree_->ClearCurrentlyScrollingLayer(); | 1555 active_tree_->ClearCurrentlyScrollingLayer(); |
1556 did_lock_scrolling_layer_ = false; | 1556 did_lock_scrolling_layer_ = false; |
1557 } | 1557 } |
1558 | 1558 |
1559 void LayerTreeHostImpl::ScrollEnd() { | 1559 void LayerTreeHostImpl::ScrollEnd() { |
1560 if (top_controls_manager_) | 1560 if (top_controls_manager_) |
1561 top_controls_manager_->ScrollEnd(); | 1561 top_controls_manager_->ScrollEnd(); |
1562 ClearCurrentlyScrollingLayer(); | 1562 ClearCurrentlyScrollingLayer(); |
| 1563 StartScrollbarAnimation(base::TimeTicks::Now()); |
1563 } | 1564 } |
1564 | 1565 |
1565 void LayerTreeHostImpl::PinchGestureBegin() { | 1566 void LayerTreeHostImpl::PinchGestureBegin() { |
1566 pinch_gesture_active_ = true; | 1567 pinch_gesture_active_ = true; |
1567 previous_pinch_anchor_ = gfx::Point(); | 1568 previous_pinch_anchor_ = gfx::Point(); |
1568 client_->RenewTreePriority(); | 1569 client_->RenewTreePriority(); |
1569 } | 1570 } |
1570 | 1571 |
1571 void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, | 1572 void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, |
1572 gfx::Point anchor) { | 1573 gfx::Point anchor) { |
(...skipping 25 matching lines...) Expand all Loading... |
1598 } | 1599 } |
1599 | 1600 |
1600 client_->SetNeedsCommitOnImplThread(); | 1601 client_->SetNeedsCommitOnImplThread(); |
1601 client_->SetNeedsRedrawOnImplThread(); | 1602 client_->SetNeedsRedrawOnImplThread(); |
1602 client_->RenewTreePriority(); | 1603 client_->RenewTreePriority(); |
1603 } | 1604 } |
1604 | 1605 |
1605 void LayerTreeHostImpl::PinchGestureEnd() { | 1606 void LayerTreeHostImpl::PinchGestureEnd() { |
1606 pinch_gesture_active_ = false; | 1607 pinch_gesture_active_ = false; |
1607 | 1608 |
1608 if (RootScrollLayer() && | |
1609 RootScrollLayer()->scrollbar_animation_controller()) { | |
1610 RootScrollLayer()->scrollbar_animation_controller()-> | |
1611 didPinchGestureEnd(base::TimeTicks::Now()); | |
1612 } | |
1613 | |
1614 client_->SetNeedsCommitOnImplThread(); | 1609 client_->SetNeedsCommitOnImplThread(); |
1615 } | 1610 } |
1616 | 1611 |
1617 static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, | 1612 static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, |
1618 LayerImpl* layer_impl) { | 1613 LayerImpl* layer_impl) { |
1619 if (!layer_impl) | 1614 if (!layer_impl) |
1620 return; | 1615 return; |
1621 | 1616 |
1622 gfx::Vector2d scroll_delta = | 1617 gfx::Vector2d scroll_delta = |
1623 gfx::ToFlooredVector2d(layer_impl->scroll_delta()); | 1618 gfx::ToFlooredVector2d(layer_impl->scroll_delta()); |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1823 AnimateScrollbarsRecursive(active_tree_->root_layer(), time); | 1818 AnimateScrollbarsRecursive(active_tree_->root_layer(), time); |
1824 } | 1819 } |
1825 | 1820 |
1826 void LayerTreeHostImpl::AnimateScrollbarsRecursive(LayerImpl* layer, | 1821 void LayerTreeHostImpl::AnimateScrollbarsRecursive(LayerImpl* layer, |
1827 base::TimeTicks time) { | 1822 base::TimeTicks time) { |
1828 if (!layer) | 1823 if (!layer) |
1829 return; | 1824 return; |
1830 | 1825 |
1831 ScrollbarAnimationController* scrollbar_controller = | 1826 ScrollbarAnimationController* scrollbar_controller = |
1832 layer->scrollbar_animation_controller(); | 1827 layer->scrollbar_animation_controller(); |
1833 if (scrollbar_controller && scrollbar_controller->animate(time)) | 1828 if (scrollbar_controller && scrollbar_controller->animate(time)) { |
| 1829 TRACE_EVENT_INSTANT0( |
| 1830 "cc", "LayerTreeHostImpl::setNeedsRedraw due to AnimateScrollbars"); |
1834 client_->SetNeedsRedrawOnImplThread(); | 1831 client_->SetNeedsRedrawOnImplThread(); |
| 1832 } |
1835 | 1833 |
1836 for (size_t i = 0; i < layer->children().size(); ++i) | 1834 for (size_t i = 0; i < layer->children().size(); ++i) |
1837 AnimateScrollbarsRecursive(layer->children()[i], time); | 1835 AnimateScrollbarsRecursive(layer->children()[i], time); |
1838 } | 1836 } |
1839 | 1837 |
| 1838 void LayerTreeHostImpl::StartScrollbarAnimation(base::TimeTicks time) { |
| 1839 TRACE_EVENT0("cc", "LayerTreeHostImpl::startScrollbarAnimation"); |
| 1840 StartScrollbarAnimationRecursive(RootLayer(), time); |
| 1841 } |
| 1842 |
| 1843 void LayerTreeHostImpl::StartScrollbarAnimationRecursive(LayerImpl* layer, |
| 1844 base::TimeTicks time) { |
| 1845 if (!layer) |
| 1846 return; |
| 1847 |
| 1848 ScrollbarAnimationController* scrollbar_controller = |
| 1849 layer->scrollbar_animation_controller(); |
| 1850 if (scrollbar_controller && layer != CurrentlyScrollingLayer()) { |
| 1851 double delay = scrollbar_controller->secondsBeforeStart(time); |
| 1852 if (delay > 0) |
| 1853 client_->RequestScrollbarAnimationOnImplThread(delay); |
| 1854 else if (delay == 0 && scrollbar_controller->animate(time)) |
| 1855 client_->SetNeedsRedrawOnImplThread(); |
| 1856 } |
| 1857 |
| 1858 for (size_t i = 0; i < layer->children().size(); ++i) |
| 1859 StartScrollbarAnimationRecursive(layer->children()[i], time); |
| 1860 } |
| 1861 |
1840 void LayerTreeHostImpl::SetTreePriority(TreePriority priority) { | 1862 void LayerTreeHostImpl::SetTreePriority(TreePriority priority) { |
1841 if (!tile_manager_) | 1863 if (!tile_manager_) |
1842 return; | 1864 return; |
1843 | 1865 |
1844 GlobalStateThatImpactsTilePriority new_state(tile_manager_->GlobalState()); | 1866 GlobalStateThatImpactsTilePriority new_state(tile_manager_->GlobalState()); |
1845 if (new_state.tree_priority == priority) | 1867 if (new_state.tree_priority == priority) |
1846 return; | 1868 return; |
1847 | 1869 |
1848 new_state.tree_priority = priority; | 1870 new_state.tree_priority = priority; |
1849 tile_manager_->SetGlobalState(new_state); | 1871 tile_manager_->SetGlobalState(new_state); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1922 tile_manager_->SetRecordRenderingStats(debug_state_.recordRenderingStats()); | 1944 tile_manager_->SetRecordRenderingStats(debug_state_.recordRenderingStats()); |
1923 } | 1945 } |
1924 | 1946 |
1925 void LayerTreeHostImpl::SavePaintTime(const base::TimeDelta& total_paint_time, | 1947 void LayerTreeHostImpl::SavePaintTime(const base::TimeDelta& total_paint_time, |
1926 int commit_number) { | 1948 int commit_number) { |
1927 DCHECK(debug_state_.continuousPainting); | 1949 DCHECK(debug_state_.continuousPainting); |
1928 paint_time_counter_->SavePaintTime(total_paint_time, commit_number); | 1950 paint_time_counter_->SavePaintTime(total_paint_time, commit_number); |
1929 } | 1951 } |
1930 | 1952 |
1931 } // namespace cc | 1953 } // namespace cc |
OLD | NEW |