summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorvmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-13 02:33:41 +0000
committervmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-13 02:33:41 +0000
commitbc4cd9e311bf209bfb9ffe465d36a21c29a4d177 (patch)
tree38ddbda9851993518625e754f1e73f868e61dec0 /cc
parent30bf3400a67688b71fc026035ce9b1308edea183 (diff)
downloadchromium_src-bc4cd9e311bf209bfb9ffe465d36a21c29a4d177.zip
chromium_src-bc4cd9e311bf209bfb9ffe465d36a21c29a4d177.tar.gz
chromium_src-bc4cd9e311bf209bfb9ffe465d36a21c29a4d177.tar.bz2
cc: Ensure that layers with invalid tile priorities don't raster.
This patch ensures that when a layer is does not have valid tile priorities (ie it's recycled, or it's not in the render surface layer list), then the raster iterator will not return any tiles. BUG=381704 R=reveman Review URL: https://codereview.chromium.org/329383002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276896 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r--cc/layers/picture_layer_impl.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index d45b562..2ff92a5 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -1442,11 +1442,20 @@ PictureLayerImpl::LayerRasterTileIterator::LayerRasterTileIterator(
bool prioritize_low_res)
: layer_(layer), current_stage_(0) {
DCHECK(layer_);
+
+ // Early out if the layer has no tilings.
if (!layer_->tilings_ || !layer_->tilings_->num_tilings()) {
current_stage_ = arraysize(stages_);
return;
}
+ // Tiles without valid priority are treated as having lowest priority and
+ // never considered for raster.
+ if (!layer_->HasValidTilePriorities()) {
+ current_stage_ = arraysize(stages_);
+ return;
+ }
+
WhichTree tree =
layer_->layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE;
@@ -1546,6 +1555,10 @@ PictureLayerImpl::LayerEvictionTileIterator::LayerEvictionTileIterator(
iteration_stage_(TilePriority::EVENTUALLY),
required_for_activation_(false),
layer_(layer) {
+ // Early out if the layer has no tilings.
+ // TODO(vmpstr): Once tile priorities are determined by the iterators, ensure
+ // that layers that don't have valid tile priorities have lowest priorities so
+ // they evict their tiles first (crbug.com/381704)
if (!layer_->tilings_ || !layer_->tilings_->num_tilings())
return;