| Index: cc/resources/picture_layer_tiling.cc
|
| diff --git a/cc/resources/picture_layer_tiling.cc b/cc/resources/picture_layer_tiling.cc
|
| index 3d132e162c7aca32e1b41ff875808962933fab50..3d05ee656cf04751de8a3b5170a912563e15a873 100644
|
| --- a/cc/resources/picture_layer_tiling.cc
|
| +++ b/cc/resources/picture_layer_tiling.cc
|
| @@ -533,10 +533,14 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| tile->set_is_occluded(tree, is_occluded);
|
| }
|
|
|
| - // Assign soon priority to skewport tiles.
|
| + // Assign soon priority to skewport tiles. Include borders to also prioritize
|
| + // tiles whose borders are in the skewport, and to exclude tiles whose borders
|
| + // are in the visible rect, since those are handled above.
|
| has_skewport_rect_tiles_ = false;
|
| - for (TilingData::DifferenceIterator iter(
|
| - &tiling_data_, skewport, visible_rect_in_content_space);
|
| + for (TilingData::DifferenceIterator iter(&tiling_data_,
|
| + skewport,
|
| + visible_rect_in_content_space,
|
| + include_borders);
|
| iter;
|
| ++iter) {
|
| TileMap::iterator find = tiles_.find(iter.index());
|
| @@ -556,10 +560,12 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| tile->SetPriority(tree, priority);
|
| }
|
|
|
| - // Assign eventually priority to interest rect tiles.
|
| + // Assign eventually priority to interest rect tiles. Include borders to
|
| + // also prioritize tiles whose borders are in the eventually rect and exclude
|
| + // tiles whose borders are in the skewport, as those are handled above.
|
| has_eventually_rect_tiles_ = false;
|
| for (TilingData::DifferenceIterator iter(
|
| - &tiling_data_, eventually_rect, skewport);
|
| + &tiling_data_, eventually_rect, skewport, include_borders);
|
| iter;
|
| ++iter) {
|
| TileMap::iterator find = tiles_.find(iter.index());
|
| @@ -579,13 +585,15 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| tile->SetPriority(tree, priority);
|
| }
|
|
|
| - // Upgrade the priority on border tiles to be SOON.
|
| + // Upgrade the priority on border tiles to be SOON. Include borders to include
|
| + // tiles whose borders are in the soon_border_rect and exclude those with
|
| + // borders in the skewport, as those are handled above.
|
| gfx::Rect soon_border_rect = visible_rect_in_content_space;
|
| float border = kSoonBorderDistanceInScreenPixels / content_to_screen_scale;
|
| soon_border_rect.Inset(-border, -border, -border, -border);
|
| has_soon_border_rect_tiles_ = false;
|
| for (TilingData::DifferenceIterator iter(
|
| - &tiling_data_, soon_border_rect, skewport);
|
| + &tiling_data_, soon_border_rect, skewport, include_borders);
|
| iter;
|
| ++iter) {
|
| TileMap::iterator find = tiles_.find(iter.index());
|
| @@ -616,10 +624,14 @@ void PictureLayerTiling::SetLiveTilesRect(
|
| if (live_tiles_rect_ == new_live_tiles_rect)
|
| return;
|
|
|
| - // Iterate to delete all tiles outside of our new live_tiles rect.
|
| + // Iterate to delete all tiles outside of our new live_tiles rect. Iterate
|
| + // without borders to avoid including tiles that have only border pixels
|
| + // outside the new live tiles rect.
|
| + bool include_borders = false;
|
| for (TilingData::DifferenceIterator iter(&tiling_data_,
|
| live_tiles_rect_,
|
| - new_live_tiles_rect);
|
| + new_live_tiles_rect,
|
| + include_borders);
|
| iter;
|
| ++iter) {
|
| TileMapKey key(iter.index());
|
| @@ -635,9 +647,12 @@ void PictureLayerTiling::SetLiveTilesRect(
|
| const PictureLayerTiling* twin_tiling = client_->GetTwinTiling(this);
|
|
|
| // Iterate to allocate new tiles for all regions with newly exposed area.
|
| + // Do the iteration without borders to avoid adding tiles that already exist
|
| + // for tiles whose border pixels are in the new live tiles rect.
|
| for (TilingData::DifferenceIterator iter(&tiling_data_,
|
| new_live_tiles_rect,
|
| - live_tiles_rect_);
|
| + live_tiles_rect_,
|
| + include_borders);
|
| iter;
|
| ++iter) {
|
| TileMapKey key(iter.index());
|
|
|