Chromium Code Reviews| Index: cc/resources/raster_tile_priority_queue_all.cc |
| diff --git a/cc/resources/raster_tile_priority_queue_all.cc b/cc/resources/raster_tile_priority_queue_all.cc |
| index e9836cd8414f7915bd6354eb573b6c0ff6df48f2..41050297e5e27b4bbaba84df74fe78134496d9aa 100644 |
| --- a/cc/resources/raster_tile_priority_queue_all.cc |
| +++ b/cc/resources/raster_tile_priority_queue_all.cc |
| @@ -4,6 +4,7 @@ |
| #include "cc/resources/raster_tile_priority_queue_all.h" |
| +#include "base/containers/hash_tables.h" |
| #include "cc/resources/tiling_set_raster_queue_all.h" |
| namespace cc { |
| @@ -127,11 +128,10 @@ WhichTree HigherPriorityTree(TreePriority tree_priority, |
| } |
| scoped_ptr<TilingSetRasterQueueAll> CreateTilingSetRasterQueue( |
| - PictureLayerImpl* layer, |
| + PictureLayerTilingSet* tiling_set, |
| TreePriority tree_priority) { |
| - if (!layer) |
| + if (!tiling_set) |
| return nullptr; |
| - PictureLayerTilingSet* tiling_set = layer->picture_layer_tiling_set(); |
| bool prioritize_low_res = tree_priority == SMOOTHNESS_TAKES_PRIORITY; |
| return make_scoped_ptr( |
| new TilingSetRasterQueueAll(tiling_set, prioritize_low_res)); |
| @@ -146,14 +146,26 @@ RasterTilePriorityQueueAll::~RasterTilePriorityQueueAll() { |
| } |
| void RasterTilePriorityQueueAll::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; |
| + // Reset |active| if it doesn't have valid tile priorities. |
| + if (active && !active->HasValidTilePriorities()) |
|
enne (OOO)
2015/02/10 21:28:31
Would it make sense to unregister/register when th
vmpstr
2015/02/11 21:37:16
We process non-valid-tile-priority layers in evict
enne (OOO)
2015/02/11 21:46:16
Aha, ok! That makes sense.
|
| + active = nullptr; |
| + |
| + PictureLayerTilingSet* pending = |
| + has_pending_tree ? paired_tiling_set.pending : nullptr; |
| + // Reset |pending| if it doesn't have valid tile priorities. |
| + if (pending && !pending->HasValidTilePriorities()) |
| + pending = nullptr; |
| + |
| + paired_queues_.push_back(make_scoped_ptr( |
| + new PairedTilingSetQueue(active, pending, tree_priority_))); |
| } |
| paired_queues_.make_heap(RasterOrderComparator(tree_priority_)); |
| } |
| @@ -180,13 +192,12 @@ RasterTilePriorityQueueAll::PairedTilingSetQueue::PairedTilingSetQueue() { |
| } |
| RasterTilePriorityQueueAll::PairedTilingSetQueue::PairedTilingSetQueue( |
| - const PictureLayerImpl::Pair& layer_pair, |
| + PictureLayerTilingSet* active_set, |
| + PictureLayerTilingSet* pending_set, |
| TreePriority tree_priority) |
| - : active_queue_( |
| - CreateTilingSetRasterQueue(layer_pair.active, tree_priority)), |
| - pending_queue_( |
| - CreateTilingSetRasterQueue(layer_pair.pending, tree_priority)), |
| - has_both_layers_(layer_pair.active && layer_pair.pending) { |
| + : active_queue_(CreateTilingSetRasterQueue(active_set, tree_priority)), |
| + pending_queue_(CreateTilingSetRasterQueue(pending_set, tree_priority)), |
| + has_both_tiling_sets_(active_set && pending_set) { |
| SkipTilesReturnedByTwin(tree_priority); |
| TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| @@ -238,7 +249,7 @@ void RasterTilePriorityQueueAll::PairedTilingSetQueue::Pop( |
| void RasterTilePriorityQueueAll::PairedTilingSetQueue::SkipTilesReturnedByTwin( |
| TreePriority tree_priority) { |
| - if (!has_both_layers_) |
| + if (!has_both_tiling_sets_) |
| return; |
| // We have both layers (active and pending) thus we can encounter shared |