Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(212)

Side by Side Diff: cc/trees/layer_tree_host.cc

Issue 2259083002: cc: Correct elastic overscroll synchronization. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_unittest_serialization.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 gpu_rasterization_histogram_recorded_ = true; 735 gpu_rasterization_histogram_recorded_ = true;
736 } 736 }
737 737
738 void LayerTreeHost::BuildPropertyTreesForTesting() { 738 void LayerTreeHost::BuildPropertyTreesForTesting() {
739 PropertyTreeBuilder::PreCalculateMetaInformation(layer_tree_->root_layer()); 739 PropertyTreeBuilder::PreCalculateMetaInformation(layer_tree_->root_layer());
740 gfx::Transform identity_transform; 740 gfx::Transform identity_transform;
741 PropertyTreeBuilder::BuildPropertyTrees( 741 PropertyTreeBuilder::BuildPropertyTrees(
742 layer_tree_->root_layer(), layer_tree_->page_scale_layer(), 742 layer_tree_->root_layer(), layer_tree_->page_scale_layer(),
743 layer_tree_->inner_viewport_scroll_layer(), 743 layer_tree_->inner_viewport_scroll_layer(),
744 layer_tree_->outer_viewport_scroll_layer(), 744 layer_tree_->outer_viewport_scroll_layer(),
745 layer_tree_->overscroll_elasticity_layer(), elastic_overscroll_, 745 layer_tree_->overscroll_elasticity_layer(),
746 layer_tree_->page_scale_factor(), layer_tree_->device_scale_factor(), 746 layer_tree_->elastic_overscroll(), layer_tree_->page_scale_factor(),
747 layer_tree_->device_scale_factor(),
747 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform, 748 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform,
748 layer_tree_->property_trees()); 749 layer_tree_->property_trees());
749 } 750 }
750 751
751 bool LayerTreeHost::UsingSharedMemoryResources() { 752 bool LayerTreeHost::UsingSharedMemoryResources() {
752 return GetRendererCapabilities().using_shared_memory_resources; 753 return GetRendererCapabilities().using_shared_memory_resources;
753 } 754 }
754 755
755 bool LayerTreeHost::DoUpdateLayers(Layer* root_layer) { 756 bool LayerTreeHost::DoUpdateLayers(Layer* root_layer) {
756 TRACE_EVENT1("cc", "LayerTreeHost::DoUpdateLayers", "source_frame_number", 757 TRACE_EVENT1("cc", "LayerTreeHost::DoUpdateLayers", "source_frame_number",
(...skipping 24 matching lines...) Expand all
781 PropertyTreeBuilder::PreCalculateMetaInformation(root_layer); 782 PropertyTreeBuilder::PreCalculateMetaInformation(root_layer);
782 bool can_render_to_separate_surface = true; 783 bool can_render_to_separate_surface = true;
783 PropertyTrees* property_trees = layer_tree_->property_trees(); 784 PropertyTrees* property_trees = layer_tree_->property_trees();
784 if (!settings_.use_layer_lists) { 785 if (!settings_.use_layer_lists) {
785 // If use_layer_lists is set, then the property trees should have been 786 // If use_layer_lists is set, then the property trees should have been
786 // built by the client already. 787 // built by the client already.
787 PropertyTreeBuilder::BuildPropertyTrees( 788 PropertyTreeBuilder::BuildPropertyTrees(
788 root_layer, page_scale_layer, 789 root_layer, page_scale_layer,
789 layer_tree_->inner_viewport_scroll_layer(), 790 layer_tree_->inner_viewport_scroll_layer(),
790 layer_tree_->outer_viewport_scroll_layer(), 791 layer_tree_->outer_viewport_scroll_layer(),
791 layer_tree_->overscroll_elasticity_layer(), elastic_overscroll_, 792 layer_tree_->overscroll_elasticity_layer(),
792 layer_tree_->page_scale_factor(), layer_tree_->device_scale_factor(), 793 layer_tree_->elastic_overscroll(), layer_tree_->page_scale_factor(),
794 layer_tree_->device_scale_factor(),
793 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform, 795 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform,
794 property_trees); 796 property_trees);
795 TRACE_EVENT_INSTANT1("cc", 797 TRACE_EVENT_INSTANT1("cc",
796 "LayerTreeHost::UpdateLayers_BuiltPropertyTrees", 798 "LayerTreeHost::UpdateLayers_BuiltPropertyTrees",
797 TRACE_EVENT_SCOPE_THREAD, "property_trees", 799 TRACE_EVENT_SCOPE_THREAD, "property_trees",
798 property_trees->AsTracedValue()); 800 property_trees->AsTracedValue());
799 } else { 801 } else {
800 TRACE_EVENT_INSTANT1("cc", 802 TRACE_EVENT_INSTANT1("cc",
801 "LayerTreeHost::UpdateLayers_ReceivedPropertyTrees", 803 "LayerTreeHost::UpdateLayers_ReceivedPropertyTrees",
802 TRACE_EVENT_SCOPE_THREAD, "property_trees", 804 TRACE_EVENT_SCOPE_THREAD, "property_trees",
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 // it to the client. If the client comes back and sets it to the same 844 // it to the client. If the client comes back and sets it to the same
843 // value, then the layer can early out without needing a full commit. 845 // value, then the layer can early out without needing a full commit.
844 if (layer_tree_->inner_viewport_scroll_layer()) { 846 if (layer_tree_->inner_viewport_scroll_layer()) {
845 layer_tree_->inner_viewport_scroll_layer()->SetScrollOffsetFromImplSide( 847 layer_tree_->inner_viewport_scroll_layer()->SetScrollOffsetFromImplSide(
846 gfx::ScrollOffsetWithDelta( 848 gfx::ScrollOffsetWithDelta(
847 layer_tree_->inner_viewport_scroll_layer()->scroll_offset(), 849 layer_tree_->inner_viewport_scroll_layer()->scroll_offset(),
848 inner_viewport_scroll_delta)); 850 inner_viewport_scroll_delta));
849 } 851 }
850 852
851 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); 853 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta);
852 elastic_overscroll_ += info->elastic_overscroll_delta; 854 layer_tree_->SetElasticOverscrollFromImplSide(
855 layer_tree_->elastic_overscroll() + info->elastic_overscroll_delta);
853 // TODO(ccameron): pass the elastic overscroll here so that input events 856 // TODO(ccameron): pass the elastic overscroll here so that input events
854 // may be translated appropriately. 857 // may be translated appropriately.
855 client_->ApplyViewportDeltas(inner_viewport_scroll_delta, gfx::Vector2dF(), 858 client_->ApplyViewportDeltas(inner_viewport_scroll_delta, gfx::Vector2dF(),
856 info->elastic_overscroll_delta, 859 info->elastic_overscroll_delta,
857 info->page_scale_delta, 860 info->page_scale_delta,
858 info->top_controls_delta); 861 info->top_controls_delta);
859 SetNeedsUpdateLayers(); 862 SetNeedsUpdateLayers();
860 } 863 }
861 864
862 void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) { 865 void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) {
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 1086
1084 LayerProtoConverter::SerializeLayerProperties(this, 1087 LayerProtoConverter::SerializeLayerProperties(this,
1085 proto->mutable_layer_updates()); 1088 proto->mutable_layer_updates());
1086 1089
1087 std::vector<PictureData> pictures = 1090 std::vector<PictureData> pictures =
1088 engine_picture_cache_->CalculateCacheUpdateAndFlush(); 1091 engine_picture_cache_->CalculateCacheUpdateAndFlush();
1089 proto::PictureDataVectorToSkPicturesProto(pictures, 1092 proto::PictureDataVectorToSkPicturesProto(pictures,
1090 proto->mutable_pictures()); 1093 proto->mutable_pictures());
1091 1094
1092 debug_state_.ToProtobuf(proto->mutable_debug_state()); 1095 debug_state_.ToProtobuf(proto->mutable_debug_state());
1093 Vector2dFToProto(elastic_overscroll_, proto->mutable_elastic_overscroll());
1094 proto->set_has_gpu_rasterization_trigger(has_gpu_rasterization_trigger_); 1096 proto->set_has_gpu_rasterization_trigger(has_gpu_rasterization_trigger_);
1095 proto->set_content_is_suitable_for_gpu_rasterization( 1097 proto->set_content_is_suitable_for_gpu_rasterization(
1096 content_is_suitable_for_gpu_rasterization_); 1098 content_is_suitable_for_gpu_rasterization_);
1097 proto->set_id(id_); 1099 proto->set_id(id_);
1098 proto->set_next_commit_forces_redraw(next_commit_forces_redraw_); 1100 proto->set_next_commit_forces_redraw(next_commit_forces_redraw_);
1099 1101
1100 proto->set_surface_client_id(surface_client_id_); 1102 proto->set_surface_client_id(surface_client_id_);
1101 proto->set_next_surface_sequence(next_surface_sequence_); 1103 proto->set_next_surface_sequence(next_surface_sequence_);
1102 1104
1103 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID( 1105 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(
(...skipping 14 matching lines...) Expand all
1118 SkPicturesProtoToPictureDataVector(proto_pictures); 1120 SkPicturesProtoToPictureDataVector(proto_pictures);
1119 client_picture_cache_->ApplyCacheUpdate(pictures); 1121 client_picture_cache_->ApplyCacheUpdate(pictures);
1120 1122
1121 LayerProtoConverter::DeserializeLayerProperties(layer_tree_->root_layer(), 1123 LayerProtoConverter::DeserializeLayerProperties(layer_tree_->root_layer(),
1122 proto.layer_updates()); 1124 proto.layer_updates());
1123 1125
1124 // The deserialization is finished, so now clear the cache. 1126 // The deserialization is finished, so now clear the cache.
1125 client_picture_cache_->Flush(); 1127 client_picture_cache_->Flush();
1126 1128
1127 debug_state_.FromProtobuf(proto.debug_state()); 1129 debug_state_.FromProtobuf(proto.debug_state());
1128 elastic_overscroll_ = ProtoToVector2dF(proto.elastic_overscroll());
1129 has_gpu_rasterization_trigger_ = proto.has_gpu_rasterization_trigger(); 1130 has_gpu_rasterization_trigger_ = proto.has_gpu_rasterization_trigger();
1130 content_is_suitable_for_gpu_rasterization_ = 1131 content_is_suitable_for_gpu_rasterization_ =
1131 proto.content_is_suitable_for_gpu_rasterization(); 1132 proto.content_is_suitable_for_gpu_rasterization();
1132 id_ = proto.id(); 1133 id_ = proto.id();
1133 next_commit_forces_redraw_ = proto.next_commit_forces_redraw(); 1134 next_commit_forces_redraw_ = proto.next_commit_forces_redraw();
1134 1135
1135 surface_client_id_ = proto.surface_client_id(); 1136 surface_client_id_ = proto.surface_client_id();
1136 next_surface_sequence_ = proto.next_surface_sequence(); 1137 next_surface_sequence_ = proto.next_surface_sequence();
1137 } 1138 }
1138 1139
1139 AnimationHost* LayerTreeHost::animation_host() const { 1140 AnimationHost* LayerTreeHost::animation_host() const {
1140 return layer_tree_->animation_host(); 1141 return layer_tree_->animation_host();
1141 } 1142 }
1142 1143
1143 } // namespace cc 1144 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_unittest_serialization.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698