| 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 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 SetDebugState(settings.initial_debug_state); | 234 SetDebugState(settings.initial_debug_state); |
| 235 | 235 |
| 236 // LTHI always has an active tree. | 236 // LTHI always has an active tree. |
| 237 active_tree_ = | 237 active_tree_ = |
| 238 LayerTreeImpl::create(this, new SyncedProperty<ScaleGroup>(), | 238 LayerTreeImpl::create(this, new SyncedProperty<ScaleGroup>(), |
| 239 new SyncedTopControls, new SyncedElasticOverscroll); | 239 new SyncedTopControls, new SyncedElasticOverscroll); |
| 240 | 240 |
| 241 TRACE_EVENT_OBJECT_CREATED_WITH_ID( | 241 TRACE_EVENT_OBJECT_CREATED_WITH_ID( |
| 242 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerTreeHostImpl", id_); | 242 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerTreeHostImpl", id_); |
| 243 | 243 |
| 244 if (settings.calculate_top_controls_position) { | 244 top_controls_manager_ = |
| 245 top_controls_manager_ = | 245 TopControlsManager::Create(this, |
| 246 TopControlsManager::Create(this, | 246 settings.top_controls_show_threshold, |
| 247 settings.top_controls_show_threshold, | 247 settings.top_controls_hide_threshold); |
| 248 settings.top_controls_hide_threshold); | |
| 249 } | |
| 250 } | 248 } |
| 251 | 249 |
| 252 LayerTreeHostImpl::~LayerTreeHostImpl() { | 250 LayerTreeHostImpl::~LayerTreeHostImpl() { |
| 253 DCHECK(proxy_->IsImplThread()); | 251 DCHECK(proxy_->IsImplThread()); |
| 254 TRACE_EVENT0("cc", "LayerTreeHostImpl::~LayerTreeHostImpl()"); | 252 TRACE_EVENT0("cc", "LayerTreeHostImpl::~LayerTreeHostImpl()"); |
| 255 TRACE_EVENT_OBJECT_DELETED_WITH_ID( | 253 TRACE_EVENT_OBJECT_DELETED_WITH_ID( |
| 256 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerTreeHostImpl", id_); | 254 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerTreeHostImpl", id_); |
| 257 | 255 |
| 258 if (input_handler_client_) { | 256 if (input_handler_client_) { |
| 259 input_handler_client_->WillShutdown(); | 257 input_handler_client_->WillShutdown(); |
| (...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 909 | 907 |
| 910 // Should only have one render pass in resourceless software mode. | 908 // Should only have one render pass in resourceless software mode. |
| 911 DCHECK(draw_mode != DRAW_MODE_RESOURCELESS_SOFTWARE || | 909 DCHECK(draw_mode != DRAW_MODE_RESOURCELESS_SOFTWARE || |
| 912 frame->render_passes.size() == 1u) | 910 frame->render_passes.size() == 1u) |
| 913 << frame->render_passes.size(); | 911 << frame->render_passes.size(); |
| 914 | 912 |
| 915 return draw_result; | 913 return draw_result; |
| 916 } | 914 } |
| 917 | 915 |
| 918 void LayerTreeHostImpl::MainThreadHasStoppedFlinging() { | 916 void LayerTreeHostImpl::MainThreadHasStoppedFlinging() { |
| 919 if (top_controls_manager_) | 917 top_controls_manager_->MainThreadHasStoppedFlinging(); |
| 920 top_controls_manager_->MainThreadHasStoppedFlinging(); | |
| 921 if (input_handler_client_) | 918 if (input_handler_client_) |
| 922 input_handler_client_->MainThreadHasStoppedFlinging(); | 919 input_handler_client_->MainThreadHasStoppedFlinging(); |
| 923 } | 920 } |
| 924 | 921 |
| 925 void LayerTreeHostImpl::DidAnimateScrollOffset() { | 922 void LayerTreeHostImpl::DidAnimateScrollOffset() { |
| 926 client_->SetNeedsCommitOnImplThread(); | 923 client_->SetNeedsCommitOnImplThread(); |
| 927 client_->RenewTreePriority(); | 924 client_->RenewTreePriority(); |
| 928 } | 925 } |
| 929 | 926 |
| 930 void LayerTreeHostImpl::SetViewportDamage(const gfx::Rect& damage_rect) { | 927 void LayerTreeHostImpl::SetViewportDamage(const gfx::Rect& damage_rect) { |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1416 } | 1413 } |
| 1417 | 1414 |
| 1418 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { | 1415 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { |
| 1419 CompositorFrameMetadata metadata; | 1416 CompositorFrameMetadata metadata; |
| 1420 metadata.device_scale_factor = device_scale_factor_; | 1417 metadata.device_scale_factor = device_scale_factor_; |
| 1421 metadata.page_scale_factor = active_tree_->current_page_scale_factor(); | 1418 metadata.page_scale_factor = active_tree_->current_page_scale_factor(); |
| 1422 metadata.scrollable_viewport_size = active_tree_->ScrollableViewportSize(); | 1419 metadata.scrollable_viewport_size = active_tree_->ScrollableViewportSize(); |
| 1423 metadata.root_layer_size = active_tree_->ScrollableSize(); | 1420 metadata.root_layer_size = active_tree_->ScrollableSize(); |
| 1424 metadata.min_page_scale_factor = active_tree_->min_page_scale_factor(); | 1421 metadata.min_page_scale_factor = active_tree_->min_page_scale_factor(); |
| 1425 metadata.max_page_scale_factor = active_tree_->max_page_scale_factor(); | 1422 metadata.max_page_scale_factor = active_tree_->max_page_scale_factor(); |
| 1426 if (top_controls_manager_) { | 1423 metadata.location_bar_offset = |
| 1427 metadata.location_bar_offset = | 1424 gfx::Vector2dF(0.f, top_controls_manager_->ControlsTopOffset()); |
| 1428 gfx::Vector2dF(0.f, top_controls_manager_->ControlsTopOffset()); | 1425 metadata.location_bar_content_translation = |
| 1429 metadata.location_bar_content_translation = | 1426 gfx::Vector2dF(0.f, top_controls_manager_->ContentTopOffset()); |
| 1430 gfx::Vector2dF(0.f, top_controls_manager_->ContentTopOffset()); | |
| 1431 } | |
| 1432 | 1427 |
| 1433 active_tree_->GetViewportSelection(&metadata.selection_start, | 1428 active_tree_->GetViewportSelection(&metadata.selection_start, |
| 1434 &metadata.selection_end); | 1429 &metadata.selection_end); |
| 1435 | 1430 |
| 1436 LayerImpl* root_layer_for_overflow = OuterViewportScrollLayer() | 1431 LayerImpl* root_layer_for_overflow = OuterViewportScrollLayer() |
| 1437 ? OuterViewportScrollLayer() | 1432 ? OuterViewportScrollLayer() |
| 1438 : InnerViewportScrollLayer(); | 1433 : InnerViewportScrollLayer(); |
| 1439 if (root_layer_for_overflow) { | 1434 if (root_layer_for_overflow) { |
| 1440 metadata.root_overflow_x_hidden = | 1435 metadata.root_overflow_x_hidden = |
| 1441 !root_layer_for_overflow->user_scrollable_horizontal(); | 1436 !root_layer_for_overflow->user_scrollable_horizontal(); |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1651 // to complete its work so that we can draw new tiles within the impl frame | 1646 // to complete its work so that we can draw new tiles within the impl frame |
| 1652 // we are beginning now. | 1647 // we are beginning now. |
| 1653 SetNeedsRedraw(); | 1648 SetNeedsRedraw(); |
| 1654 } | 1649 } |
| 1655 } | 1650 } |
| 1656 | 1651 |
| 1657 void LayerTreeHostImpl::UpdateViewportContainerSizes() { | 1652 void LayerTreeHostImpl::UpdateViewportContainerSizes() { |
| 1658 LayerImpl* inner_container = active_tree_->InnerViewportContainerLayer(); | 1653 LayerImpl* inner_container = active_tree_->InnerViewportContainerLayer(); |
| 1659 LayerImpl* outer_container = active_tree_->OuterViewportContainerLayer(); | 1654 LayerImpl* outer_container = active_tree_->OuterViewportContainerLayer(); |
| 1660 | 1655 |
| 1661 if (!inner_container || !top_controls_manager_) | 1656 if (!inner_container) |
| 1662 return; | 1657 return; |
| 1663 | 1658 |
| 1659 // TODO(bokan): This code is currently specific to top controls. It should be |
| 1660 // made general. crbug.com/464814. |
| 1661 if (!TopControlsHeight()) { |
| 1662 if (outer_container) |
| 1663 outer_container->SetBoundsDelta(gfx::Vector2dF()); |
| 1664 |
| 1665 inner_container->SetBoundsDelta(gfx::Vector2dF()); |
| 1666 active_tree_->InnerViewportScrollLayer()->SetBoundsDelta(gfx::Vector2dF()); |
| 1667 |
| 1668 return; |
| 1669 } |
| 1670 |
| 1664 ViewportAnchor anchor(InnerViewportScrollLayer(), | 1671 ViewportAnchor anchor(InnerViewportScrollLayer(), |
| 1665 OuterViewportScrollLayer()); | 1672 OuterViewportScrollLayer()); |
| 1666 | 1673 |
| 1667 // Adjust the inner viewport by shrinking/expanding the container to account | 1674 // Adjust the inner viewport by shrinking/expanding the container to account |
| 1668 // for the change in top controls height since the last Resize from Blink. | 1675 // for the change in top controls height since the last Resize from Blink. |
| 1669 float top_controls_layout_height = | 1676 float top_controls_layout_height = |
| 1670 active_tree_->top_controls_shrink_blink_size() | 1677 active_tree_->top_controls_shrink_blink_size() |
| 1671 ? active_tree_->top_controls_height() | 1678 ? active_tree_->top_controls_height() |
| 1672 : 0.f; | 1679 : 0.f; |
| 1673 inner_container->SetBoundsDelta(gfx::Vector2dF( | 1680 inner_container->SetBoundsDelta(gfx::Vector2dF( |
| (...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2354 return ancestor == scroll_ancestor; | 2361 return ancestor == scroll_ancestor; |
| 2355 } | 2362 } |
| 2356 return false; | 2363 return false; |
| 2357 } | 2364 } |
| 2358 | 2365 |
| 2359 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin( | 2366 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin( |
| 2360 const gfx::Point& viewport_point, | 2367 const gfx::Point& viewport_point, |
| 2361 InputHandler::ScrollInputType type) { | 2368 InputHandler::ScrollInputType type) { |
| 2362 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin"); | 2369 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin"); |
| 2363 | 2370 |
| 2364 if (top_controls_manager_) | 2371 top_controls_manager_->ScrollBegin(); |
| 2365 top_controls_manager_->ScrollBegin(); | |
| 2366 | 2372 |
| 2367 DCHECK(!CurrentlyScrollingLayer()); | 2373 DCHECK(!CurrentlyScrollingLayer()); |
| 2368 ClearCurrentlyScrollingLayer(); | 2374 ClearCurrentlyScrollingLayer(); |
| 2369 | 2375 |
| 2370 gfx::PointF device_viewport_point = gfx::ScalePoint(viewport_point, | 2376 gfx::PointF device_viewport_point = gfx::ScalePoint(viewport_point, |
| 2371 device_scale_factor_); | 2377 device_scale_factor_); |
| 2372 LayerImpl* layer_impl = | 2378 LayerImpl* layer_impl = |
| 2373 active_tree_->FindLayerThatIsHitByPoint(device_viewport_point); | 2379 active_tree_->FindLayerThatIsHitByPoint(device_viewport_point); |
| 2374 | 2380 |
| 2375 if (layer_impl) { | 2381 if (layer_impl) { |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2566 layer_impl->ScrollBy(delta); | 2572 layer_impl->ScrollBy(delta); |
| 2567 gfx::ScrollOffset scrolled = | 2573 gfx::ScrollOffset scrolled = |
| 2568 layer_impl->CurrentScrollOffset() - previous_offset; | 2574 layer_impl->CurrentScrollOffset() - previous_offset; |
| 2569 return gfx::Vector2dF(scrolled.x(), scrolled.y()); | 2575 return gfx::Vector2dF(scrolled.x(), scrolled.y()); |
| 2570 } | 2576 } |
| 2571 | 2577 |
| 2572 bool LayerTreeHostImpl::ShouldTopControlsConsumeScroll( | 2578 bool LayerTreeHostImpl::ShouldTopControlsConsumeScroll( |
| 2573 const gfx::Vector2dF& scroll_delta) const { | 2579 const gfx::Vector2dF& scroll_delta) const { |
| 2574 DCHECK(CurrentlyScrollingLayer()); | 2580 DCHECK(CurrentlyScrollingLayer()); |
| 2575 | 2581 |
| 2576 if (!top_controls_manager_) | |
| 2577 return false; | |
| 2578 | |
| 2579 // Always consume if it's in the direction to show the top controls. | 2582 // Always consume if it's in the direction to show the top controls. |
| 2580 if (scroll_delta.y() < 0) | 2583 if (scroll_delta.y() < 0) |
| 2581 return true; | 2584 return true; |
| 2582 | 2585 |
| 2583 if (active_tree()->TotalScrollOffset().y() < | 2586 if (active_tree()->TotalScrollOffset().y() < |
| 2584 active_tree()->TotalMaxScrollOffset().y()) | 2587 active_tree()->TotalMaxScrollOffset().y()) |
| 2585 return true; | 2588 return true; |
| 2586 | 2589 |
| 2587 return false; | 2590 return false; |
| 2588 } | 2591 } |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2809 } | 2812 } |
| 2810 | 2813 |
| 2811 void LayerTreeHostImpl::ClearCurrentlyScrollingLayer() { | 2814 void LayerTreeHostImpl::ClearCurrentlyScrollingLayer() { |
| 2812 active_tree_->ClearCurrentlyScrollingLayer(); | 2815 active_tree_->ClearCurrentlyScrollingLayer(); |
| 2813 did_lock_scrolling_layer_ = false; | 2816 did_lock_scrolling_layer_ = false; |
| 2814 scroll_affects_scroll_handler_ = false; | 2817 scroll_affects_scroll_handler_ = false; |
| 2815 accumulated_root_overscroll_ = gfx::Vector2dF(); | 2818 accumulated_root_overscroll_ = gfx::Vector2dF(); |
| 2816 } | 2819 } |
| 2817 | 2820 |
| 2818 void LayerTreeHostImpl::ScrollEnd() { | 2821 void LayerTreeHostImpl::ScrollEnd() { |
| 2819 if (top_controls_manager_) | 2822 top_controls_manager_->ScrollEnd(); |
| 2820 top_controls_manager_->ScrollEnd(); | |
| 2821 ClearCurrentlyScrollingLayer(); | 2823 ClearCurrentlyScrollingLayer(); |
| 2822 } | 2824 } |
| 2823 | 2825 |
| 2824 InputHandler::ScrollStatus LayerTreeHostImpl::FlingScrollBegin() { | 2826 InputHandler::ScrollStatus LayerTreeHostImpl::FlingScrollBegin() { |
| 2825 if (!active_tree_->CurrentlyScrollingLayer()) | 2827 if (!active_tree_->CurrentlyScrollingLayer()) |
| 2826 return SCROLL_IGNORED; | 2828 return SCROLL_IGNORED; |
| 2827 | 2829 |
| 2828 if (settings_.ignore_root_layer_flings && | 2830 if (settings_.ignore_root_layer_flings && |
| 2829 (active_tree_->CurrentlyScrollingLayer() == InnerViewportScrollLayer() || | 2831 (active_tree_->CurrentlyScrollingLayer() == InnerViewportScrollLayer() || |
| 2830 active_tree_->CurrentlyScrollingLayer() == OuterViewportScrollLayer())) { | 2832 active_tree_->CurrentlyScrollingLayer() == OuterViewportScrollLayer())) { |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2931 previous_pinch_anchor_ = gfx::Point(); | 2933 previous_pinch_anchor_ = gfx::Point(); |
| 2932 client_->RenewTreePriority(); | 2934 client_->RenewTreePriority(); |
| 2933 pinch_gesture_end_should_clear_scrolling_layer_ = !CurrentlyScrollingLayer(); | 2935 pinch_gesture_end_should_clear_scrolling_layer_ = !CurrentlyScrollingLayer(); |
| 2934 if (active_tree_->OuterViewportScrollLayer()) { | 2936 if (active_tree_->OuterViewportScrollLayer()) { |
| 2935 active_tree_->SetCurrentlyScrollingLayer( | 2937 active_tree_->SetCurrentlyScrollingLayer( |
| 2936 active_tree_->OuterViewportScrollLayer()); | 2938 active_tree_->OuterViewportScrollLayer()); |
| 2937 } else { | 2939 } else { |
| 2938 active_tree_->SetCurrentlyScrollingLayer( | 2940 active_tree_->SetCurrentlyScrollingLayer( |
| 2939 active_tree_->InnerViewportScrollLayer()); | 2941 active_tree_->InnerViewportScrollLayer()); |
| 2940 } | 2942 } |
| 2941 if (top_controls_manager_) | 2943 top_controls_manager_->PinchBegin(); |
| 2942 top_controls_manager_->PinchBegin(); | |
| 2943 } | 2944 } |
| 2944 | 2945 |
| 2945 void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, | 2946 void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, |
| 2946 const gfx::Point& anchor) { | 2947 const gfx::Point& anchor) { |
| 2947 if (!InnerViewportScrollLayer()) | 2948 if (!InnerViewportScrollLayer()) |
| 2948 return; | 2949 return; |
| 2949 | 2950 |
| 2950 TRACE_EVENT0("cc", "LayerTreeHostImpl::PinchGestureUpdate"); | 2951 TRACE_EVENT0("cc", "LayerTreeHostImpl::PinchGestureUpdate"); |
| 2951 | 2952 |
| 2952 // For a moment the scroll offset ends up being outside of the max range. This | 2953 // For a moment the scroll offset ends up being outside of the max range. This |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2991 SetNeedsRedraw(); | 2992 SetNeedsRedraw(); |
| 2992 client_->RenewTreePriority(); | 2993 client_->RenewTreePriority(); |
| 2993 } | 2994 } |
| 2994 | 2995 |
| 2995 void LayerTreeHostImpl::PinchGestureEnd() { | 2996 void LayerTreeHostImpl::PinchGestureEnd() { |
| 2996 pinch_gesture_active_ = false; | 2997 pinch_gesture_active_ = false; |
| 2997 if (pinch_gesture_end_should_clear_scrolling_layer_) { | 2998 if (pinch_gesture_end_should_clear_scrolling_layer_) { |
| 2998 pinch_gesture_end_should_clear_scrolling_layer_ = false; | 2999 pinch_gesture_end_should_clear_scrolling_layer_ = false; |
| 2999 ClearCurrentlyScrollingLayer(); | 3000 ClearCurrentlyScrollingLayer(); |
| 3000 } | 3001 } |
| 3001 if (top_controls_manager_) | 3002 top_controls_manager_->PinchEnd(); |
| 3002 top_controls_manager_->PinchEnd(); | |
| 3003 client_->SetNeedsCommitOnImplThread(); | 3003 client_->SetNeedsCommitOnImplThread(); |
| 3004 // When a pinch ends, we may be displaying content cached at incorrect scales, | 3004 // When a pinch ends, we may be displaying content cached at incorrect scales, |
| 3005 // so updating draw properties and drawing will ensure we are using the right | 3005 // so updating draw properties and drawing will ensure we are using the right |
| 3006 // scales that we want when we're not inside a pinch. | 3006 // scales that we want when we're not inside a pinch. |
| 3007 active_tree_->set_needs_update_draw_properties(); | 3007 active_tree_->set_needs_update_draw_properties(); |
| 3008 SetNeedsRedraw(); | 3008 SetNeedsRedraw(); |
| 3009 } | 3009 } |
| 3010 | 3010 |
| 3011 static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, | 3011 static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, |
| 3012 LayerImpl* layer_impl) { | 3012 LayerImpl* layer_impl) { |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3087 page_scale_animation_ = nullptr; | 3087 page_scale_animation_ = nullptr; |
| 3088 client_->SetNeedsCommitOnImplThread(); | 3088 client_->SetNeedsCommitOnImplThread(); |
| 3089 client_->RenewTreePriority(); | 3089 client_->RenewTreePriority(); |
| 3090 client_->DidCompletePageScaleAnimationOnImplThread(); | 3090 client_->DidCompletePageScaleAnimationOnImplThread(); |
| 3091 } else { | 3091 } else { |
| 3092 SetNeedsAnimate(); | 3092 SetNeedsAnimate(); |
| 3093 } | 3093 } |
| 3094 } | 3094 } |
| 3095 | 3095 |
| 3096 void LayerTreeHostImpl::AnimateTopControls(base::TimeTicks time) { | 3096 void LayerTreeHostImpl::AnimateTopControls(base::TimeTicks time) { |
| 3097 if (!top_controls_manager_ || !top_controls_manager_->animation()) | 3097 if (!top_controls_manager_->animation()) |
| 3098 return; | 3098 return; |
| 3099 | 3099 |
| 3100 gfx::Vector2dF scroll = top_controls_manager_->Animate(time); | 3100 gfx::Vector2dF scroll = top_controls_manager_->Animate(time); |
| 3101 | 3101 |
| 3102 if (top_controls_manager_->animation()) | 3102 if (top_controls_manager_->animation()) |
| 3103 SetNeedsAnimate(); | 3103 SetNeedsAnimate(); |
| 3104 | 3104 |
| 3105 if (active_tree_->TotalScrollOffset().y() == 0.f) | 3105 if (active_tree_->TotalScrollOffset().y() == 0.f) |
| 3106 return; | 3106 return; |
| 3107 | 3107 |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3450 (*it)->OnSetNeedsRedrawOnImpl(); | 3450 (*it)->OnSetNeedsRedrawOnImpl(); |
| 3451 } | 3451 } |
| 3452 | 3452 |
| 3453 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfForwardingToMainThread() { | 3453 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfForwardingToMainThread() { |
| 3454 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 3454 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
| 3455 for (; it != swap_promise_monitor_.end(); it++) | 3455 for (; it != swap_promise_monitor_.end(); it++) |
| 3456 (*it)->OnForwardScrollUpdateToMainThreadOnImpl(); | 3456 (*it)->OnForwardScrollUpdateToMainThreadOnImpl(); |
| 3457 } | 3457 } |
| 3458 | 3458 |
| 3459 } // namespace cc | 3459 } // namespace cc |
| OLD | NEW |