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

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

Issue 913203006: cc: Calculate "can use lcd text" on the compositor thread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review comments 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') | no next file » | 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 gfx::ScrollOffset last_set_scroll_offset_; 74 gfx::ScrollOffset last_set_scroll_offset_;
75 }; 75 };
76 76
77 LayerTreeImpl::LayerTreeImpl( 77 LayerTreeImpl::LayerTreeImpl(
78 LayerTreeHostImpl* layer_tree_host_impl, 78 LayerTreeHostImpl* layer_tree_host_impl,
79 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor, 79 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor,
80 scoped_refptr<SyncedTopControls> top_controls_shown_ratio, 80 scoped_refptr<SyncedTopControls> top_controls_shown_ratio,
81 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll) 81 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll)
82 : layer_tree_host_impl_(layer_tree_host_impl), 82 : layer_tree_host_impl_(layer_tree_host_impl),
83 source_frame_number_(-1), 83 source_frame_number_(-1),
84 last_update_draw_properties_frame_number_(-1),
84 hud_layer_(0), 85 hud_layer_(0),
85 currently_scrolling_layer_(NULL), 86 currently_scrolling_layer_(NULL),
86 root_layer_scroll_offset_delegate_(NULL), 87 root_layer_scroll_offset_delegate_(NULL),
87 background_color_(0), 88 background_color_(0),
88 has_transparent_background_(false), 89 has_transparent_background_(false),
89 overscroll_elasticity_layer_(NULL), 90 overscroll_elasticity_layer_(NULL),
90 page_scale_layer_(NULL), 91 page_scale_layer_(NULL),
91 inner_viewport_scroll_layer_(NULL), 92 inner_viewport_scroll_layer_(NULL),
92 outer_viewport_scroll_layer_(NULL), 93 outer_viewport_scroll_layer_(NULL),
93 page_scale_factor_(page_scale_factor), 94 page_scale_factor_(page_scale_factor),
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 } 641 }
641 } 642 }
642 643
643 occlusion_tracker.LeaveLayer(it); 644 occlusion_tracker.LeaveLayer(it);
644 } 645 }
645 646
646 unoccluded_screen_space_region_ = 647 unoccluded_screen_space_region_ =
647 occlusion_tracker.ComputeVisibleRegionInScreen(); 648 occlusion_tracker.ComputeVisibleRegionInScreen();
648 } 649 }
649 650
651 // It'd be ideal if this could be done earlier, but when the raster source
652 // is updated from the main thread during push properties, update draw
653 // properties has not occurred yet and so it's not clear whether or not the
654 // layer can or cannot use lcd text. So, this is the cleanup pass to
655 // determine if the raster source needs to be replaced with a non-lcd
656 // raster source due to draw properties.
657 //
658 // TODO(enne): Make LTHI::sync_tree return this value.
659 LayerTreeImpl* sync_tree =
660 layer_tree_host_impl_->proxy()->CommitToActiveTree()
661 ? layer_tree_host_impl_->active_tree()
662 : layer_tree_host_impl_->pending_tree();
663 if (this == sync_tree &&
664 source_frame_number_ != last_update_draw_properties_frame_number_) {
danakj 2015/02/18 19:54:47 Mmmmmmh. What if we instead pass a bool to UDP() t
enne (OOO) 2015/02/18 19:59:05 Since there's UDP called at different times on dif
665 for (const auto& layer : picture_layers_)
666 layer->UpdateCanUseLCDTextAfterCommit();
667 }
668 last_update_draw_properties_frame_number_ = source_frame_number_;
669
650 { 670 {
651 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles", 671 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles",
652 "IsActive", IsActiveTree(), "SourceFrameNumber", 672 "IsActive", IsActiveTree(), "SourceFrameNumber",
653 source_frame_number_); 673 source_frame_number_);
654 const bool resourceless_software_draw = 674 const bool resourceless_software_draw =
655 (layer_tree_host_impl_->GetDrawMode() == 675 (layer_tree_host_impl_->GetDrawMode() ==
656 DRAW_MODE_RESOURCELESS_SOFTWARE); 676 DRAW_MODE_RESOURCELESS_SOFTWARE);
657 size_t layers_updated_count = 0; 677 size_t layers_updated_count = 0;
658 bool tile_priorities_updated = false; 678 bool tile_priorities_updated = false;
659 for (PictureLayerImpl* layer : picture_layers_) { 679 for (PictureLayerImpl* layer : picture_layers_) {
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 } 872 }
853 873
854 bool LayerTreeImpl::IsPendingTree() const { 874 bool LayerTreeImpl::IsPendingTree() const {
855 return layer_tree_host_impl_->pending_tree() == this; 875 return layer_tree_host_impl_->pending_tree() == this;
856 } 876 }
857 877
858 bool LayerTreeImpl::IsRecycleTree() const { 878 bool LayerTreeImpl::IsRecycleTree() const {
859 return layer_tree_host_impl_->recycle_tree() == this; 879 return layer_tree_host_impl_->recycle_tree() == this;
860 } 880 }
861 881
882 bool LayerTreeImpl::IsSyncTree() const {
883 return layer_tree_host_impl_->sync_tree() == this;
884 }
885
862 LayerImpl* LayerTreeImpl::FindActiveTreeLayerById(int id) { 886 LayerImpl* LayerTreeImpl::FindActiveTreeLayerById(int id) {
863 LayerTreeImpl* tree = layer_tree_host_impl_->active_tree(); 887 LayerTreeImpl* tree = layer_tree_host_impl_->active_tree();
864 if (!tree) 888 if (!tree)
865 return NULL; 889 return NULL;
866 return tree->LayerById(id); 890 return tree->LayerById(id);
867 } 891 }
868 892
869 LayerImpl* LayerTreeImpl::FindPendingTreeLayerById(int id) { 893 LayerImpl* LayerTreeImpl::FindPendingTreeLayerById(int id) {
870 LayerTreeImpl* tree = layer_tree_host_impl_->pending_tree(); 894 LayerTreeImpl* tree = layer_tree_host_impl_->pending_tree();
871 if (!tree) 895 if (!tree)
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after
1621 scoped_ptr<PendingPageScaleAnimation> pending_animation) { 1645 scoped_ptr<PendingPageScaleAnimation> pending_animation) {
1622 pending_page_scale_animation_ = pending_animation.Pass(); 1646 pending_page_scale_animation_ = pending_animation.Pass();
1623 } 1647 }
1624 1648
1625 scoped_ptr<PendingPageScaleAnimation> 1649 scoped_ptr<PendingPageScaleAnimation>
1626 LayerTreeImpl::TakePendingPageScaleAnimation() { 1650 LayerTreeImpl::TakePendingPageScaleAnimation() {
1627 return pending_page_scale_animation_.Pass(); 1651 return pending_page_scale_animation_.Pass();
1628 } 1652 }
1629 1653
1630 } // namespace cc 1654 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698