| 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.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 next_commit_forces_redraw_(false), | 225 next_commit_forces_redraw_(false), |
| 226 shared_bitmap_manager_(params->shared_bitmap_manager), | 226 shared_bitmap_manager_(params->shared_bitmap_manager), |
| 227 gpu_memory_buffer_manager_(params->gpu_memory_buffer_manager), | 227 gpu_memory_buffer_manager_(params->gpu_memory_buffer_manager), |
| 228 task_graph_runner_(params->task_graph_runner), | 228 task_graph_runner_(params->task_graph_runner), |
| 229 image_serialization_processor_(params->image_serialization_processor), | 229 image_serialization_processor_(params->image_serialization_processor), |
| 230 surface_client_id_(0u), | 230 surface_client_id_(0u), |
| 231 next_surface_sequence_(1u) { | 231 next_surface_sequence_(1u) { |
| 232 DCHECK(task_graph_runner_); | 232 DCHECK(task_graph_runner_); |
| 233 DCHECK(layer_tree_); | 233 DCHECK(layer_tree_); |
| 234 | 234 |
| 235 layer_tree_->animation_host()->SetMutatorHostClient(this); | |
| 236 | |
| 237 rendering_stats_instrumentation_->set_record_rendering_stats( | 235 rendering_stats_instrumentation_->set_record_rendering_stats( |
| 238 debug_state_.RecordRenderingStats()); | 236 debug_state_.RecordRenderingStats()); |
| 239 } | 237 } |
| 240 | 238 |
| 241 void LayerTreeHost::InitializeThreaded( | 239 void LayerTreeHost::InitializeThreaded( |
| 242 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, | 240 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
| 243 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, | 241 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
| 244 std::unique_ptr<BeginFrameSource> external_begin_frame_source) { | 242 std::unique_ptr<BeginFrameSource> external_begin_frame_source) { |
| 245 task_runner_provider_ = | 243 task_runner_provider_ = |
| 246 TaskRunnerProvider::Create(main_task_runner, impl_task_runner); | 244 TaskRunnerProvider::Create(main_task_runner, impl_task_runner); |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 400 void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { | 398 void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { |
| 401 DCHECK(!IsRemoteServer()); | 399 DCHECK(!IsRemoteServer()); |
| 402 DCHECK(task_runner_provider_->IsImplThread()); | 400 DCHECK(task_runner_provider_->IsImplThread()); |
| 403 | 401 |
| 404 bool is_new_trace; | 402 bool is_new_trace; |
| 405 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); | 403 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); |
| 406 if (is_new_trace && | 404 if (is_new_trace && |
| 407 frame_viewer_instrumentation::IsTracingLayerTreeSnapshots() && | 405 frame_viewer_instrumentation::IsTracingLayerTreeSnapshots() && |
| 408 layer_tree_->root_layer()) { | 406 layer_tree_->root_layer()) { |
| 409 LayerTreeHostCommon::CallFunctionForEveryLayer( | 407 LayerTreeHostCommon::CallFunctionForEveryLayer( |
| 410 this, [](Layer* layer) { layer->DidBeginTracing(); }); | 408 layer_tree_.get(), [](Layer* layer) { layer->DidBeginTracing(); }); |
| 411 } | 409 } |
| 412 | 410 |
| 413 LayerTreeImpl* sync_tree = host_impl->sync_tree(); | 411 LayerTreeImpl* sync_tree = host_impl->sync_tree(); |
| 414 | 412 |
| 415 if (next_commit_forces_redraw_) { | 413 if (next_commit_forces_redraw_) { |
| 416 sync_tree->ForceRedrawNextActivation(); | 414 sync_tree->ForceRedrawNextActivation(); |
| 417 next_commit_forces_redraw_ = false; | 415 next_commit_forces_redraw_ = false; |
| 418 } | 416 } |
| 419 | 417 |
| 420 sync_tree->set_source_frame_number(source_frame_number()); | 418 sync_tree->set_source_frame_number(source_frame_number()); |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 562 return; | 560 return; |
| 563 | 561 |
| 564 output_surface_lost_ = true; | 562 output_surface_lost_ = true; |
| 565 SetNeedsCommit(); | 563 SetNeedsCommit(); |
| 566 } | 564 } |
| 567 | 565 |
| 568 void LayerTreeHost::SetDeferCommits(bool defer_commits) { | 566 void LayerTreeHost::SetDeferCommits(bool defer_commits) { |
| 569 proxy_->SetDeferCommits(defer_commits); | 567 proxy_->SetDeferCommits(defer_commits); |
| 570 } | 568 } |
| 571 | 569 |
| 572 void LayerTreeHost::SetNeedsDisplayOnAllLayers() { | |
| 573 for (auto* layer : *this) | |
| 574 layer->SetNeedsDisplay(); | |
| 575 } | |
| 576 | |
| 577 const RendererCapabilities& LayerTreeHost::GetRendererCapabilities() const { | 570 const RendererCapabilities& LayerTreeHost::GetRendererCapabilities() const { |
| 578 return proxy_->GetRendererCapabilities(); | 571 return proxy_->GetRendererCapabilities(); |
| 579 } | 572 } |
| 580 | 573 |
| 581 void LayerTreeHost::SetNeedsAnimate() { | 574 void LayerTreeHost::SetNeedsAnimate() { |
| 582 proxy_->SetNeedsAnimate(); | 575 proxy_->SetNeedsAnimate(); |
| 583 NotifySwapPromiseMonitorsOfSetNeedsCommit(); | 576 NotifySwapPromiseMonitorsOfSetNeedsCommit(); |
| 584 } | 577 } |
| 585 | 578 |
| 586 void LayerTreeHost::SetNeedsUpdateLayers() { | 579 void LayerTreeHost::SetNeedsUpdateLayers() { |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 705 bool LayerTreeHost::UpdateLayers() { | 698 bool LayerTreeHost::UpdateLayers() { |
| 706 DCHECK(!output_surface_lost_); | 699 DCHECK(!output_surface_lost_); |
| 707 if (!layer_tree_->root_layer()) | 700 if (!layer_tree_->root_layer()) |
| 708 return false; | 701 return false; |
| 709 DCHECK(!layer_tree_->root_layer()->parent()); | 702 DCHECK(!layer_tree_->root_layer()->parent()); |
| 710 bool result = DoUpdateLayers(layer_tree_->root_layer()); | 703 bool result = DoUpdateLayers(layer_tree_->root_layer()); |
| 711 micro_benchmark_controller_.DidUpdateLayers(); | 704 micro_benchmark_controller_.DidUpdateLayers(); |
| 712 return result || next_commit_forces_redraw_; | 705 return result || next_commit_forces_redraw_; |
| 713 } | 706 } |
| 714 | 707 |
| 715 LayerListIterator<Layer> LayerTreeHost::begin() const { | |
| 716 return LayerListIterator<Layer>(layer_tree_->root_layer()); | |
| 717 } | |
| 718 | |
| 719 LayerListIterator<Layer> LayerTreeHost::end() const { | |
| 720 return LayerListIterator<Layer>(nullptr); | |
| 721 } | |
| 722 | |
| 723 LayerListReverseIterator<Layer> LayerTreeHost::rbegin() { | |
| 724 return LayerListReverseIterator<Layer>(layer_tree_->root_layer()); | |
| 725 } | |
| 726 | |
| 727 LayerListReverseIterator<Layer> LayerTreeHost::rend() { | |
| 728 return LayerListReverseIterator<Layer>(nullptr); | |
| 729 } | |
| 730 | |
| 731 void LayerTreeHost::DidCompletePageScaleAnimation() { | 708 void LayerTreeHost::DidCompletePageScaleAnimation() { |
| 732 did_complete_scale_animation_ = true; | 709 did_complete_scale_animation_ = true; |
| 733 } | 710 } |
| 734 | 711 |
| 735 void LayerTreeHost::RecordGpuRasterizationHistogram() { | 712 void LayerTreeHost::RecordGpuRasterizationHistogram() { |
| 736 // Gpu rasterization is only supported for Renderer compositors. | 713 // Gpu rasterization is only supported for Renderer compositors. |
| 737 // Checking for IsSingleThreaded() to exclude Browser compositors. | 714 // Checking for IsSingleThreaded() to exclude Browser compositors. |
| 738 if (gpu_rasterization_histogram_recorded_ || IsSingleThreaded()) | 715 if (gpu_rasterization_histogram_recorded_ || IsSingleThreaded()) |
| 739 return; | 716 return; |
| 740 | 717 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 764 PropertyTreeBuilder::BuildPropertyTrees( | 741 PropertyTreeBuilder::BuildPropertyTrees( |
| 765 layer_tree_->root_layer(), layer_tree_->page_scale_layer(), | 742 layer_tree_->root_layer(), layer_tree_->page_scale_layer(), |
| 766 layer_tree_->inner_viewport_scroll_layer(), | 743 layer_tree_->inner_viewport_scroll_layer(), |
| 767 layer_tree_->outer_viewport_scroll_layer(), | 744 layer_tree_->outer_viewport_scroll_layer(), |
| 768 layer_tree_->overscroll_elasticity_layer(), elastic_overscroll_, | 745 layer_tree_->overscroll_elasticity_layer(), elastic_overscroll_, |
| 769 layer_tree_->page_scale_factor(), layer_tree_->device_scale_factor(), | 746 layer_tree_->page_scale_factor(), layer_tree_->device_scale_factor(), |
| 770 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform, | 747 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform, |
| 771 layer_tree_->property_trees()); | 748 layer_tree_->property_trees()); |
| 772 } | 749 } |
| 773 | 750 |
| 774 static void SetElementIdForTesting(Layer* layer) { | |
| 775 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); | |
| 776 } | |
| 777 | |
| 778 void LayerTreeHost::SetElementIdsForTesting() { | |
| 779 LayerTreeHostCommon::CallFunctionForEveryLayer(this, SetElementIdForTesting); | |
| 780 } | |
| 781 | |
| 782 bool LayerTreeHost::UsingSharedMemoryResources() { | 751 bool LayerTreeHost::UsingSharedMemoryResources() { |
| 783 return GetRendererCapabilities().using_shared_memory_resources; | 752 return GetRendererCapabilities().using_shared_memory_resources; |
| 784 } | 753 } |
| 785 | 754 |
| 786 bool LayerTreeHost::DoUpdateLayers(Layer* root_layer) { | 755 bool LayerTreeHost::DoUpdateLayers(Layer* root_layer) { |
| 787 TRACE_EVENT1("cc", "LayerTreeHost::DoUpdateLayers", "source_frame_number", | 756 TRACE_EVENT1("cc", "LayerTreeHost::DoUpdateLayers", "source_frame_number", |
| 788 source_frame_number()); | 757 source_frame_number()); |
| 789 | 758 |
| 790 layer_tree_->UpdateHudLayer(debug_state_.ShowHudInfo()); | 759 layer_tree_->UpdateHudLayer(debug_state_.ShowHudInfo()); |
| 791 UpdateHudLayer(); | 760 UpdateHudLayer(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 829 property_trees->AsTracedValue()); | 798 property_trees->AsTracedValue()); |
| 830 } else { | 799 } else { |
| 831 TRACE_EVENT_INSTANT1("cc", | 800 TRACE_EVENT_INSTANT1("cc", |
| 832 "LayerTreeHost::UpdateLayers_ReceivedPropertyTrees", | 801 "LayerTreeHost::UpdateLayers_ReceivedPropertyTrees", |
| 833 TRACE_EVENT_SCOPE_THREAD, "property_trees", | 802 TRACE_EVENT_SCOPE_THREAD, "property_trees", |
| 834 property_trees->AsTracedValue()); | 803 property_trees->AsTracedValue()); |
| 835 } | 804 } |
| 836 draw_property_utils::UpdatePropertyTrees(property_trees, | 805 draw_property_utils::UpdatePropertyTrees(property_trees, |
| 837 can_render_to_separate_surface); | 806 can_render_to_separate_surface); |
| 838 draw_property_utils::FindLayersThatNeedUpdates( | 807 draw_property_utils::FindLayersThatNeedUpdates( |
| 839 this, property_trees->transform_tree, property_trees->effect_tree, | 808 layer_tree_.get(), property_trees->transform_tree, |
| 840 &update_layer_list); | 809 property_trees->effect_tree, &update_layer_list); |
| 841 } | 810 } |
| 842 | 811 |
| 843 for (const auto& layer : update_layer_list) | 812 for (const auto& layer : update_layer_list) |
| 844 layer->SavePaintProperties(); | 813 layer->SavePaintProperties(); |
| 845 | 814 |
| 846 bool content_is_suitable_for_gpu = true; | 815 bool content_is_suitable_for_gpu = true; |
| 847 bool did_paint_content = layer_tree_->UpdateLayers( | 816 bool did_paint_content = layer_tree_->UpdateLayers( |
| 848 update_layer_list, &content_is_suitable_for_gpu); | 817 update_layer_list, &content_is_suitable_for_gpu); |
| 849 | 818 |
| 850 if (content_is_suitable_for_gpu) { | 819 if (content_is_suitable_for_gpu) { |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 TRACE_EVENT_WITH_FLOW1("input,benchmark", | 864 TRACE_EVENT_WITH_FLOW1("input,benchmark", |
| 896 "LatencyInfo.Flow", | 865 "LatencyInfo.Flow", |
| 897 TRACE_ID_DONT_MANGLE(swap_promise->TraceId()), | 866 TRACE_ID_DONT_MANGLE(swap_promise->TraceId()), |
| 898 TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, | 867 TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, |
| 899 "step", "Main thread scroll update"); | 868 "step", "Main thread scroll update"); |
| 900 QueueSwapPromise(std::move(swap_promise)); | 869 QueueSwapPromise(std::move(swap_promise)); |
| 901 } | 870 } |
| 902 | 871 |
| 903 if (layer_tree_->root_layer()) { | 872 if (layer_tree_->root_layer()) { |
| 904 for (size_t i = 0; i < info->scrolls.size(); ++i) { | 873 for (size_t i = 0; i < info->scrolls.size(); ++i) { |
| 905 Layer* layer = LayerById(info->scrolls[i].layer_id); | 874 Layer* layer = layer_tree_->LayerById(info->scrolls[i].layer_id); |
| 906 if (!layer) | 875 if (!layer) |
| 907 continue; | 876 continue; |
| 908 layer->SetScrollOffsetFromImplSide(gfx::ScrollOffsetWithDelta( | 877 layer->SetScrollOffsetFromImplSide(gfx::ScrollOffsetWithDelta( |
| 909 layer->scroll_offset(), info->scrolls[i].scroll_delta)); | 878 layer->scroll_offset(), info->scrolls[i].scroll_delta)); |
| 910 SetNeedsUpdateLayers(); | 879 SetNeedsUpdateLayers(); |
| 911 } | 880 } |
| 912 } | 881 } |
| 913 | 882 |
| 914 // This needs to happen after scroll deltas have been sent to prevent top | 883 // This needs to happen after scroll deltas have been sent to prevent top |
| 915 // controls from clamping the layout viewport both on the compositor and | 884 // controls from clamping the layout viewport both on the compositor and |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1047 | 1016 |
| 1048 SurfaceSequence LayerTreeHost::CreateSurfaceSequence() { | 1017 SurfaceSequence LayerTreeHost::CreateSurfaceSequence() { |
| 1049 return SurfaceSequence(surface_client_id_, next_surface_sequence_++); | 1018 return SurfaceSequence(surface_client_id_, next_surface_sequence_++); |
| 1050 } | 1019 } |
| 1051 | 1020 |
| 1052 void LayerTreeHost::SetLayerTreeMutator( | 1021 void LayerTreeHost::SetLayerTreeMutator( |
| 1053 std::unique_ptr<LayerTreeMutator> mutator) { | 1022 std::unique_ptr<LayerTreeMutator> mutator) { |
| 1054 proxy_->SetMutator(std::move(mutator)); | 1023 proxy_->SetMutator(std::move(mutator)); |
| 1055 } | 1024 } |
| 1056 | 1025 |
| 1057 Layer* LayerTreeHost::LayerById(int id) const { | |
| 1058 return layer_tree_->LayerById(id); | |
| 1059 } | |
| 1060 | |
| 1061 Layer* LayerTreeHost::LayerByElementId(ElementId element_id) const { | |
| 1062 ElementLayersMap::const_iterator iter = element_layers_map_.find(element_id); | |
| 1063 return iter != element_layers_map_.end() ? iter->second : nullptr; | |
| 1064 } | |
| 1065 | |
| 1066 void LayerTreeHost::AddToElementMap(Layer* layer) { | |
| 1067 if (!layer->element_id()) | |
| 1068 return; | |
| 1069 | |
| 1070 element_layers_map_[layer->element_id()] = layer; | |
| 1071 } | |
| 1072 | |
| 1073 void LayerTreeHost::RemoveFromElementMap(Layer* layer) { | |
| 1074 if (!layer->element_id()) | |
| 1075 return; | |
| 1076 | |
| 1077 element_layers_map_.erase(layer->element_id()); | |
| 1078 } | |
| 1079 | |
| 1080 bool LayerTreeHost::IsElementInList(ElementId element_id, | |
| 1081 ElementListType list_type) const { | |
| 1082 return list_type == ElementListType::ACTIVE && LayerByElementId(element_id); | |
| 1083 } | |
| 1084 | |
| 1085 void LayerTreeHost::SetMutatorsNeedCommit() { | |
| 1086 SetNeedsCommit(); | |
| 1087 } | |
| 1088 | |
| 1089 void LayerTreeHost::SetMutatorsNeedRebuildPropertyTrees() { | |
| 1090 layer_tree_->property_trees()->needs_rebuild = true; | |
| 1091 } | |
| 1092 | |
| 1093 void LayerTreeHost::SetElementFilterMutated(ElementId element_id, | |
| 1094 ElementListType list_type, | |
| 1095 const FilterOperations& filters) { | |
| 1096 Layer* layer = LayerByElementId(element_id); | |
| 1097 DCHECK(layer); | |
| 1098 layer->OnFilterAnimated(filters); | |
| 1099 } | |
| 1100 | |
| 1101 void LayerTreeHost::SetElementOpacityMutated(ElementId element_id, | |
| 1102 ElementListType list_type, | |
| 1103 float opacity) { | |
| 1104 Layer* layer = LayerByElementId(element_id); | |
| 1105 DCHECK(layer); | |
| 1106 layer->OnOpacityAnimated(opacity); | |
| 1107 } | |
| 1108 | |
| 1109 void LayerTreeHost::SetElementTransformMutated( | |
| 1110 ElementId element_id, | |
| 1111 ElementListType list_type, | |
| 1112 const gfx::Transform& transform) { | |
| 1113 Layer* layer = LayerByElementId(element_id); | |
| 1114 DCHECK(layer); | |
| 1115 layer->OnTransformAnimated(transform); | |
| 1116 } | |
| 1117 | |
| 1118 void LayerTreeHost::SetElementScrollOffsetMutated( | |
| 1119 ElementId element_id, | |
| 1120 ElementListType list_type, | |
| 1121 const gfx::ScrollOffset& scroll_offset) { | |
| 1122 Layer* layer = LayerByElementId(element_id); | |
| 1123 DCHECK(layer); | |
| 1124 layer->OnScrollOffsetAnimated(scroll_offset); | |
| 1125 } | |
| 1126 | |
| 1127 void LayerTreeHost::ElementTransformIsAnimatingChanged( | |
| 1128 ElementId element_id, | |
| 1129 ElementListType list_type, | |
| 1130 AnimationChangeType change_type, | |
| 1131 bool is_animating) { | |
| 1132 Layer* layer = LayerByElementId(element_id); | |
| 1133 if (layer) { | |
| 1134 switch (change_type) { | |
| 1135 case AnimationChangeType::POTENTIAL: | |
| 1136 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating); | |
| 1137 break; | |
| 1138 case AnimationChangeType::RUNNING: | |
| 1139 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating); | |
| 1140 break; | |
| 1141 case AnimationChangeType::BOTH: | |
| 1142 layer->OnTransformIsPotentiallyAnimatingChanged(is_animating); | |
| 1143 layer->OnTransformIsCurrentlyAnimatingChanged(is_animating); | |
| 1144 break; | |
| 1145 } | |
| 1146 } | |
| 1147 } | |
| 1148 | |
| 1149 void LayerTreeHost::ElementOpacityIsAnimatingChanged( | |
| 1150 ElementId element_id, | |
| 1151 ElementListType list_type, | |
| 1152 AnimationChangeType change_type, | |
| 1153 bool is_animating) { | |
| 1154 Layer* layer = LayerByElementId(element_id); | |
| 1155 if (layer) { | |
| 1156 switch (change_type) { | |
| 1157 case AnimationChangeType::POTENTIAL: | |
| 1158 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating); | |
| 1159 break; | |
| 1160 case AnimationChangeType::RUNNING: | |
| 1161 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating); | |
| 1162 break; | |
| 1163 case AnimationChangeType::BOTH: | |
| 1164 layer->OnOpacityIsPotentiallyAnimatingChanged(is_animating); | |
| 1165 layer->OnOpacityIsCurrentlyAnimatingChanged(is_animating); | |
| 1166 break; | |
| 1167 } | |
| 1168 } | |
| 1169 } | |
| 1170 | |
| 1171 void LayerTreeHost::ElementFilterIsAnimatingChanged( | |
| 1172 ElementId element_id, | |
| 1173 ElementListType list_type, | |
| 1174 AnimationChangeType change_type, | |
| 1175 bool is_animating) { | |
| 1176 Layer* layer = LayerByElementId(element_id); | |
| 1177 if (layer) { | |
| 1178 switch (change_type) { | |
| 1179 case AnimationChangeType::POTENTIAL: | |
| 1180 layer->OnFilterIsPotentiallyAnimatingChanged(is_animating); | |
| 1181 break; | |
| 1182 case AnimationChangeType::RUNNING: | |
| 1183 layer->OnFilterIsCurrentlyAnimatingChanged(is_animating); | |
| 1184 break; | |
| 1185 case AnimationChangeType::BOTH: | |
| 1186 layer->OnFilterIsPotentiallyAnimatingChanged(is_animating); | |
| 1187 layer->OnFilterIsCurrentlyAnimatingChanged(is_animating); | |
| 1188 break; | |
| 1189 } | |
| 1190 } | |
| 1191 } | |
| 1192 | |
| 1193 gfx::ScrollOffset LayerTreeHost::GetScrollOffsetForAnimation( | |
| 1194 ElementId element_id) const { | |
| 1195 Layer* layer = LayerByElementId(element_id); | |
| 1196 DCHECK(layer); | |
| 1197 return layer->ScrollOffsetForAnimation(); | |
| 1198 } | |
| 1199 | |
| 1200 bool LayerTreeHost::IsSingleThreaded() const { | 1026 bool LayerTreeHost::IsSingleThreaded() const { |
| 1201 DCHECK(compositor_mode_ != CompositorMode::SINGLE_THREADED || | 1027 DCHECK(compositor_mode_ != CompositorMode::SINGLE_THREADED || |
| 1202 !task_runner_provider_->HasImplThread()); | 1028 !task_runner_provider_->HasImplThread()); |
| 1203 return compositor_mode_ == CompositorMode::SINGLE_THREADED; | 1029 return compositor_mode_ == CompositorMode::SINGLE_THREADED; |
| 1204 } | 1030 } |
| 1205 | 1031 |
| 1206 bool LayerTreeHost::IsThreaded() const { | 1032 bool LayerTreeHost::IsThreaded() const { |
| 1207 DCHECK(compositor_mode_ != CompositorMode::THREADED || | 1033 DCHECK(compositor_mode_ != CompositorMode::THREADED || |
| 1208 task_runner_provider_->HasImplThread()); | 1034 task_runner_provider_->HasImplThread()); |
| 1209 return compositor_mode_ == CompositorMode::THREADED; | 1035 return compositor_mode_ == CompositorMode::THREADED; |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1308 | 1134 |
| 1309 surface_client_id_ = proto.surface_client_id(); | 1135 surface_client_id_ = proto.surface_client_id(); |
| 1310 next_surface_sequence_ = proto.next_surface_sequence(); | 1136 next_surface_sequence_ = proto.next_surface_sequence(); |
| 1311 } | 1137 } |
| 1312 | 1138 |
| 1313 AnimationHost* LayerTreeHost::animation_host() const { | 1139 AnimationHost* LayerTreeHost::animation_host() const { |
| 1314 return layer_tree_->animation_host(); | 1140 return layer_tree_->animation_host(); |
| 1315 } | 1141 } |
| 1316 | 1142 |
| 1317 } // namespace cc | 1143 } // namespace cc |
| OLD | NEW |