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

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

Issue 951673002: Revert "Pull chromium at 2c3ffb2355a27c32f45e508ef861416b820c823b" (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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_impl.h ('k') | cc/trees/layer_tree_settings.h » ('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_impl.h" 5 #include "cc/trees/layer_tree_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 10
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 root_layer_scroll_offset_delegate_, 527 root_layer_scroll_offset_delegate_,
528 this)); 528 this));
529 } 529 }
530 530
531 void LayerTreeImpl::ClearViewportLayers() { 531 void LayerTreeImpl::ClearViewportLayers() {
532 page_scale_layer_ = NULL; 532 page_scale_layer_ = NULL;
533 inner_viewport_scroll_layer_ = NULL; 533 inner_viewport_scroll_layer_ = NULL;
534 outer_viewport_scroll_layer_ = NULL; 534 outer_viewport_scroll_layer_ = NULL;
535 } 535 }
536 536
537 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { 537 bool LayerTreeImpl::UpdateDrawProperties() {
538 if (!needs_update_draw_properties_) 538 if (!needs_update_draw_properties_)
539 return true; 539 return true;
540 540
541 // Calling UpdateDrawProperties must clear this flag, so there can be no 541 // For max_texture_size.
542 // early outs before this.
543 needs_update_draw_properties_ = false;
544
545 // For max_texture_size. When the renderer is re-created in
546 // CreateAndSetRenderer, the needs update draw properties flag is set
547 // again.
548 if (!layer_tree_host_impl_->renderer()) 542 if (!layer_tree_host_impl_->renderer())
549 return false; 543 return false;
550 544
551 // Clear this after the renderer early out, as it should still be
552 // possible to hit test even without a renderer.
553 render_surface_layer_list_.clear();
554
555 if (!root_layer()) 545 if (!root_layer())
556 return false; 546 return false;
557 547
548 needs_update_draw_properties_ = false;
549 render_surface_layer_list_.clear();
550
558 { 551 {
559 TRACE_EVENT2( 552 TRACE_EVENT2(
560 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", 553 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties",
561 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); 554 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_);
562 LayerImpl* page_scale_layer = 555 LayerImpl* page_scale_layer =
563 page_scale_layer_ ? page_scale_layer_ : InnerViewportContainerLayer(); 556 page_scale_layer_ ? page_scale_layer_ : InnerViewportContainerLayer();
564 bool can_render_to_separate_surface = 557 bool can_render_to_separate_surface =
565 (layer_tree_host_impl_->GetDrawMode() != 558 (layer_tree_host_impl_->GetDrawMode() !=
566 DRAW_MODE_RESOURCELESS_SOFTWARE); 559 DRAW_MODE_RESOURCELESS_SOFTWARE);
567 560
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 } 640 }
648 } 641 }
649 642
650 occlusion_tracker.LeaveLayer(it); 643 occlusion_tracker.LeaveLayer(it);
651 } 644 }
652 645
653 unoccluded_screen_space_region_ = 646 unoccluded_screen_space_region_ =
654 occlusion_tracker.ComputeVisibleRegionInScreen(); 647 occlusion_tracker.ComputeVisibleRegionInScreen();
655 } 648 }
656 649
657 // It'd be ideal if this could be done earlier, but when the raster source
658 // is updated from the main thread during push properties, update draw
659 // properties has not occurred yet and so it's not clear whether or not the
660 // layer can or cannot use lcd text. So, this is the cleanup pass to
661 // determine if the raster source needs to be replaced with a non-lcd
662 // raster source due to draw properties.
663 if (update_lcd_text) {
664 // TODO(enne): Make LTHI::sync_tree return this value.
665 LayerTreeImpl* sync_tree =
666 layer_tree_host_impl_->proxy()->CommitToActiveTree()
667 ? layer_tree_host_impl_->active_tree()
668 : layer_tree_host_impl_->pending_tree();
669 // If this is not the sync tree, then it is not safe to update lcd text
670 // as it causes invalidations and the tiles may be in use.
671 DCHECK_EQ(this, sync_tree);
672 for (const auto& layer : picture_layers_)
673 layer->UpdateCanUseLCDTextAfterCommit();
674 }
675
676 { 650 {
677 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles", 651 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles",
678 "IsActive", IsActiveTree(), "SourceFrameNumber", 652 "IsActive", IsActiveTree(), "SourceFrameNumber",
679 source_frame_number_); 653 source_frame_number_);
680 const bool resourceless_software_draw = 654 const bool resourceless_software_draw =
681 (layer_tree_host_impl_->GetDrawMode() == 655 (layer_tree_host_impl_->GetDrawMode() ==
682 DRAW_MODE_RESOURCELESS_SOFTWARE); 656 DRAW_MODE_RESOURCELESS_SOFTWARE);
683 size_t layers_updated_count = 0; 657 size_t layers_updated_count = 0;
684 bool tile_priorities_updated = false; 658 bool tile_priorities_updated = false;
685 for (PictureLayerImpl* layer : picture_layers_) { 659 for (PictureLayerImpl* layer : picture_layers_) {
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 } 852 }
879 853
880 bool LayerTreeImpl::IsPendingTree() const { 854 bool LayerTreeImpl::IsPendingTree() const {
881 return layer_tree_host_impl_->pending_tree() == this; 855 return layer_tree_host_impl_->pending_tree() == this;
882 } 856 }
883 857
884 bool LayerTreeImpl::IsRecycleTree() const { 858 bool LayerTreeImpl::IsRecycleTree() const {
885 return layer_tree_host_impl_->recycle_tree() == this; 859 return layer_tree_host_impl_->recycle_tree() == this;
886 } 860 }
887 861
888 bool LayerTreeImpl::IsSyncTree() const {
889 return layer_tree_host_impl_->sync_tree() == this;
890 }
891
892 LayerImpl* LayerTreeImpl::FindActiveTreeLayerById(int id) { 862 LayerImpl* LayerTreeImpl::FindActiveTreeLayerById(int id) {
893 LayerTreeImpl* tree = layer_tree_host_impl_->active_tree(); 863 LayerTreeImpl* tree = layer_tree_host_impl_->active_tree();
894 if (!tree) 864 if (!tree)
895 return NULL; 865 return NULL;
896 return tree->LayerById(id); 866 return tree->LayerById(id);
897 } 867 }
898 868
899 LayerImpl* LayerTreeImpl::FindPendingTreeLayerById(int id) { 869 LayerImpl* LayerTreeImpl::FindPendingTreeLayerById(int id) {
900 LayerTreeImpl* tree = layer_tree_host_impl_->pending_tree(); 870 LayerTreeImpl* tree = layer_tree_host_impl_->pending_tree();
901 if (!tree) 871 if (!tree)
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 LayerTreeImpl::CreateScrollbarAnimationController(LayerImpl* scrolling_layer) { 905 LayerTreeImpl::CreateScrollbarAnimationController(LayerImpl* scrolling_layer) {
936 DCHECK(settings().scrollbar_fade_delay_ms); 906 DCHECK(settings().scrollbar_fade_delay_ms);
937 DCHECK(settings().scrollbar_fade_duration_ms); 907 DCHECK(settings().scrollbar_fade_duration_ms);
938 base::TimeDelta delay = 908 base::TimeDelta delay =
939 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_delay_ms); 909 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_delay_ms);
940 base::TimeDelta resize_delay = base::TimeDelta::FromMilliseconds( 910 base::TimeDelta resize_delay = base::TimeDelta::FromMilliseconds(
941 settings().scrollbar_fade_resize_delay_ms); 911 settings().scrollbar_fade_resize_delay_ms);
942 base::TimeDelta duration = 912 base::TimeDelta duration =
943 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_duration_ms); 913 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_duration_ms);
944 switch (settings().scrollbar_animator) { 914 switch (settings().scrollbar_animator) {
945 case LayerTreeSettings::LINEAR_FADE: { 915 case LayerTreeSettings::LinearFade: {
946 return ScrollbarAnimationControllerLinearFade::Create( 916 return ScrollbarAnimationControllerLinearFade::Create(
947 scrolling_layer, 917 scrolling_layer,
948 layer_tree_host_impl_, 918 layer_tree_host_impl_,
949 delay, 919 delay,
950 resize_delay, 920 resize_delay,
951 duration); 921 duration);
952 } 922 }
953 case LayerTreeSettings::THINNING: { 923 case LayerTreeSettings::Thinning: {
954 return ScrollbarAnimationControllerThinning::Create(scrolling_layer, 924 return ScrollbarAnimationControllerThinning::Create(scrolling_layer,
955 layer_tree_host_impl_, 925 layer_tree_host_impl_,
956 delay, 926 delay,
957 resize_delay, 927 resize_delay,
958 duration); 928 duration);
959 } 929 }
960 case LayerTreeSettings::NO_ANIMATOR: 930 case LayerTreeSettings::NoAnimator:
961 NOTREACHED(); 931 NOTREACHED();
962 break; 932 break;
963 } 933 }
964 return nullptr; 934 return nullptr;
965 } 935 }
966 936
967 void LayerTreeImpl::DidAnimateScrollOffset() { 937 void LayerTreeImpl::DidAnimateScrollOffset() {
968 layer_tree_host_impl_->DidAnimateScrollOffset(); 938 layer_tree_host_impl_->DidAnimateScrollOffset();
969 } 939 }
970 940
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
1184 return layer_tree_host_impl_->ResourceIdForUIResource(uid); 1154 return layer_tree_host_impl_->ResourceIdForUIResource(uid);
1185 } 1155 }
1186 1156
1187 bool LayerTreeImpl::IsUIResourceOpaque(UIResourceId uid) const { 1157 bool LayerTreeImpl::IsUIResourceOpaque(UIResourceId uid) const {
1188 return layer_tree_host_impl_->IsUIResourceOpaque(uid); 1158 return layer_tree_host_impl_->IsUIResourceOpaque(uid);
1189 } 1159 }
1190 1160
1191 void LayerTreeImpl::ProcessUIResourceRequestQueue() { 1161 void LayerTreeImpl::ProcessUIResourceRequestQueue() {
1192 for (const auto& req : ui_resource_request_queue_) { 1162 for (const auto& req : ui_resource_request_queue_) {
1193 switch (req.GetType()) { 1163 switch (req.GetType()) {
1194 case UIResourceRequest::UI_RESOURCE_CREATE: 1164 case UIResourceRequest::UIResourceCreate:
1195 layer_tree_host_impl_->CreateUIResource(req.GetId(), req.GetBitmap()); 1165 layer_tree_host_impl_->CreateUIResource(req.GetId(), req.GetBitmap());
1196 break; 1166 break;
1197 case UIResourceRequest::UI_RESOURCE_DELETE: 1167 case UIResourceRequest::UIResourceDelete:
1198 layer_tree_host_impl_->DeleteUIResource(req.GetId()); 1168 layer_tree_host_impl_->DeleteUIResource(req.GetId());
1199 break; 1169 break;
1200 case UIResourceRequest::UI_RESOURCE_INVALID_REQUEST: 1170 case UIResourceRequest::UIResourceInvalidRequest:
1201 NOTREACHED(); 1171 NOTREACHED();
1202 break; 1172 break;
1203 } 1173 }
1204 } 1174 }
1205 ui_resource_request_queue_.clear(); 1175 ui_resource_request_queue_.clear();
1206 1176
1207 // If all UI resource evictions were not recreated by processing this queue, 1177 // If all UI resource evictions were not recreated by processing this queue,
1208 // then another commit is required. 1178 // then another commit is required.
1209 if (layer_tree_host_impl_->EvictedUIResourcesExist()) 1179 if (layer_tree_host_impl_->EvictedUIResourcesExist())
1210 layer_tree_host_impl_->SetNeedsCommit(); 1180 layer_tree_host_impl_->SetNeedsCommit();
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
1484 ScrollsAnyDrawnRenderSurfaceLayerListMember(layer) || 1454 ScrollsAnyDrawnRenderSurfaceLayerListMember(layer) ||
1485 !layer->touch_event_handler_region().IsEmpty() || 1455 !layer->touch_event_handler_region().IsEmpty() ||
1486 layer->have_wheel_event_handlers(); 1456 layer->have_wheel_event_handlers();
1487 } 1457 }
1488 }; 1458 };
1489 1459
1490 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPoint( 1460 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPoint(
1491 const gfx::PointF& screen_space_point) { 1461 const gfx::PointF& screen_space_point) {
1492 if (!root_layer()) 1462 if (!root_layer())
1493 return NULL; 1463 return NULL;
1494 bool update_lcd_text = false; 1464 if (!UpdateDrawProperties())
1495 if (!UpdateDrawProperties(update_lcd_text))
1496 return NULL; 1465 return NULL;
1497 FindClosestMatchingLayerDataForRecursion data_for_recursion; 1466 FindClosestMatchingLayerDataForRecursion data_for_recursion;
1498 FindClosestMatchingLayer(screen_space_point, 1467 FindClosestMatchingLayer(screen_space_point,
1499 root_layer(), 1468 root_layer(),
1500 HitTestVisibleScrollableOrTouchableFunctor(), 1469 HitTestVisibleScrollableOrTouchableFunctor(),
1501 &data_for_recursion); 1470 &data_for_recursion);
1502 return data_for_recursion.closest_match; 1471 return data_for_recursion.closest_match;
1503 } 1472 }
1504 1473
1505 static bool LayerHasTouchEventHandlersAt(const gfx::PointF& screen_space_point, 1474 static bool LayerHasTouchEventHandlersAt(const gfx::PointF& screen_space_point,
(...skipping 21 matching lines...) Expand all
1527 struct FindWheelEventLayerFunctor { 1496 struct FindWheelEventLayerFunctor {
1528 bool operator()(LayerImpl* layer) const { 1497 bool operator()(LayerImpl* layer) const {
1529 return layer->have_wheel_event_handlers(); 1498 return layer->have_wheel_event_handlers();
1530 } 1499 }
1531 }; 1500 };
1532 1501
1533 LayerImpl* LayerTreeImpl::FindLayerWithWheelHandlerThatIsHitByPoint( 1502 LayerImpl* LayerTreeImpl::FindLayerWithWheelHandlerThatIsHitByPoint(
1534 const gfx::PointF& screen_space_point) { 1503 const gfx::PointF& screen_space_point) {
1535 if (!root_layer()) 1504 if (!root_layer())
1536 return NULL; 1505 return NULL;
1537 bool update_lcd_text = false; 1506 if (!UpdateDrawProperties())
1538 if (!UpdateDrawProperties(update_lcd_text))
1539 return NULL; 1507 return NULL;
1540 FindWheelEventLayerFunctor func; 1508 FindWheelEventLayerFunctor func;
1541 FindClosestMatchingLayerDataForRecursion data_for_recursion; 1509 FindClosestMatchingLayerDataForRecursion data_for_recursion;
1542 FindClosestMatchingLayer(screen_space_point, root_layer(), func, 1510 FindClosestMatchingLayer(screen_space_point, root_layer(), func,
1543 &data_for_recursion); 1511 &data_for_recursion);
1544 return data_for_recursion.closest_match; 1512 return data_for_recursion.closest_match;
1545 } 1513 }
1546 1514
1547 struct FindTouchEventLayerFunctor { 1515 struct FindTouchEventLayerFunctor {
1548 bool operator()(LayerImpl* layer) const { 1516 bool operator()(LayerImpl* layer) const {
1549 return LayerHasTouchEventHandlersAt(screen_space_point, layer); 1517 return LayerHasTouchEventHandlersAt(screen_space_point, layer);
1550 } 1518 }
1551 const gfx::PointF screen_space_point; 1519 const gfx::PointF screen_space_point;
1552 }; 1520 };
1553 1521
1554 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPointInTouchHandlerRegion( 1522 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPointInTouchHandlerRegion(
1555 const gfx::PointF& screen_space_point) { 1523 const gfx::PointF& screen_space_point) {
1556 if (!root_layer()) 1524 if (!root_layer())
1557 return NULL; 1525 return NULL;
1558 bool update_lcd_text = false; 1526 if (!UpdateDrawProperties())
1559 if (!UpdateDrawProperties(update_lcd_text))
1560 return NULL; 1527 return NULL;
1561 FindTouchEventLayerFunctor func = {screen_space_point}; 1528 FindTouchEventLayerFunctor func = {screen_space_point};
1562 FindClosestMatchingLayerDataForRecursion data_for_recursion; 1529 FindClosestMatchingLayerDataForRecursion data_for_recursion;
1563 FindClosestMatchingLayer( 1530 FindClosestMatchingLayer(
1564 screen_space_point, root_layer(), func, &data_for_recursion); 1531 screen_space_point, root_layer(), func, &data_for_recursion);
1565 return data_for_recursion.closest_match; 1532 return data_for_recursion.closest_match;
1566 } 1533 }
1567 1534
1568 void LayerTreeImpl::RegisterSelection(const LayerSelectionBound& start, 1535 void LayerTreeImpl::RegisterSelection(const LayerSelectionBound& start,
1569 const LayerSelectionBound& end) { 1536 const LayerSelectionBound& end) {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1654 scoped_ptr<PendingPageScaleAnimation> pending_animation) { 1621 scoped_ptr<PendingPageScaleAnimation> pending_animation) {
1655 pending_page_scale_animation_ = pending_animation.Pass(); 1622 pending_page_scale_animation_ = pending_animation.Pass();
1656 } 1623 }
1657 1624
1658 scoped_ptr<PendingPageScaleAnimation> 1625 scoped_ptr<PendingPageScaleAnimation>
1659 LayerTreeImpl::TakePendingPageScaleAnimation() { 1626 LayerTreeImpl::TakePendingPageScaleAnimation() {
1660 return pending_page_scale_animation_.Pass(); 1627 return pending_page_scale_animation_.Pass();
1661 } 1628 }
1662 1629
1663 } // namespace cc 1630 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_impl.h ('k') | cc/trees/layer_tree_settings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698