| Index: cc/resources/picture_layer_tiling.cc
|
| diff --git a/cc/resources/picture_layer_tiling.cc b/cc/resources/picture_layer_tiling.cc
|
| index baddcf13cee9627225c7ae47853729930f080b8e..8f4bbea7a6eaa0c680783d4ca67a2ecdc3947d93 100644
|
| --- a/cc/resources/picture_layer_tiling.cc
|
| +++ b/cc/resources/picture_layer_tiling.cc
|
| @@ -35,11 +35,24 @@ class TileEvictionOrder {
|
| const TilePriority& b_priority =
|
| b->priority_for_tree_priority(tree_priority_);
|
|
|
| - if (a_priority.priority_bin == b_priority.priority_bin &&
|
| - a->required_for_activation() != b->required_for_activation()) {
|
| + // Evict a before b if their priority bins differ and a has the higher
|
| + // priority bin.
|
| + if (a_priority.priority_bin != b_priority.priority_bin)
|
| + return a_priority.priority_bin > b_priority.priority_bin;
|
| +
|
| + // Or if a is not required and b is required.
|
| + if (a->required_for_activation() != b->required_for_activation())
|
| return b->required_for_activation();
|
| - }
|
| - return b_priority.IsHigherPriorityThan(a_priority);
|
| +
|
| + // Or if a is occluded and b is unoccluded.
|
| + bool a_is_occluded = a->is_occluded_for_tree_priority(tree_priority_);
|
| + bool b_is_occluded = b->is_occluded_for_tree_priority(tree_priority_);
|
| +
|
| + if (a_is_occluded != b_is_occluded)
|
| + return a_is_occluded;
|
| +
|
| + // Or if a is farther away from visible.
|
| + return a_priority.distance_to_visible > b_priority.distance_to_visible;
|
| }
|
|
|
| private:
|
|
|