| Index: cc/resources/eviction_tile_priority_queue.cc
|
| diff --git a/cc/resources/eviction_tile_priority_queue.cc b/cc/resources/eviction_tile_priority_queue.cc
|
| index b1ca48de5b46251930a1814881cde8dc2519ca29..6dd061b5219048c261242070053c903c385ae672 100644
|
| --- a/cc/resources/eviction_tile_priority_queue.cc
|
| +++ b/cc/resources/eviction_tile_priority_queue.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "cc/resources/eviction_tile_priority_queue.h"
|
|
|
| +#include "base/containers/hash_tables.h"
|
| +
|
| namespace cc {
|
|
|
| namespace {
|
| @@ -78,6 +80,18 @@ class EvictionOrderComparator {
|
|
|
| } // namespace
|
|
|
| +// static
|
| +scoped_ptr<EvictionTilePriorityQueue> EvictionTilePriorityQueue::Create(
|
| + const base::hash_map<int, PictureLayerTilingSet::Pair>&
|
| + paired_picture_layer_tiling_sets,
|
| + bool has_pending_tree,
|
| + TreePriority tree_priority) {
|
| + scoped_ptr<EvictionTilePriorityQueue> queue(new EvictionTilePriorityQueue);
|
| + queue->Build(paired_picture_layer_tiling_sets, has_pending_tree,
|
| + tree_priority);
|
| + return queue;
|
| +}
|
| +
|
| EvictionTilePriorityQueue::EvictionTilePriorityQueue() {
|
| }
|
|
|
| @@ -85,16 +99,19 @@ EvictionTilePriorityQueue::~EvictionTilePriorityQueue() {
|
| }
|
|
|
| void EvictionTilePriorityQueue::Build(
|
| - const std::vector<PictureLayerImpl::Pair>& paired_layers,
|
| + const base::hash_map<int, PictureLayerTilingSet::Pair>&
|
| + paired_picture_layer_tiling_sets,
|
| + bool has_pending_tree,
|
| TreePriority tree_priority) {
|
| tree_priority_ = tree_priority;
|
|
|
| - for (std::vector<PictureLayerImpl::Pair>::const_iterator it =
|
| - paired_layers.begin();
|
| - it != paired_layers.end();
|
| - ++it) {
|
| - paired_queues_.push_back(
|
| - make_scoped_ptr(new PairedTilingSetQueue(*it, tree_priority_)));
|
| + for (const auto& paired_tiling_set_pair : paired_picture_layer_tiling_sets) {
|
| + const auto& paired_tiling_set = paired_tiling_set_pair.second;
|
| + PictureLayerTilingSet* active = paired_tiling_set.active;
|
| + PictureLayerTilingSet* pending =
|
| + has_pending_tree ? paired_tiling_set.pending : nullptr;
|
| + paired_queues_.push_back(make_scoped_ptr(
|
| + new PairedTilingSetQueue(active, pending, tree_priority_)));
|
| }
|
|
|
| paired_queues_.make_heap(EvictionOrderComparator(tree_priority_));
|
| @@ -122,18 +139,17 @@ EvictionTilePriorityQueue::PairedTilingSetQueue::PairedTilingSetQueue() {
|
| }
|
|
|
| EvictionTilePriorityQueue::PairedTilingSetQueue::PairedTilingSetQueue(
|
| - const PictureLayerImpl::Pair& layer_pair,
|
| + PictureLayerTilingSet* active_set,
|
| + PictureLayerTilingSet* pending_set,
|
| TreePriority tree_priority) {
|
| - bool skip_shared_out_of_order_tiles = layer_pair.active && layer_pair.pending;
|
| - if (layer_pair.active) {
|
| + bool skip_shared_out_of_order_tiles = active_set && pending_set;
|
| + if (active_set) {
|
| active_queue = make_scoped_ptr(new TilingSetEvictionQueue(
|
| - layer_pair.active->picture_layer_tiling_set(), tree_priority,
|
| - skip_shared_out_of_order_tiles));
|
| + active_set, tree_priority, skip_shared_out_of_order_tiles));
|
| }
|
| - if (layer_pair.pending) {
|
| + if (pending_set) {
|
| pending_queue = make_scoped_ptr(new TilingSetEvictionQueue(
|
| - layer_pair.pending->picture_layer_tiling_set(), tree_priority,
|
| - skip_shared_out_of_order_tiles));
|
| + pending_set, tree_priority, skip_shared_out_of_order_tiles));
|
| }
|
| }
|
|
|
|
|