Index: cc/resources/raster_tile_priority_queue_required.cc |
diff --git a/cc/resources/raster_tile_priority_queue_required.cc b/cc/resources/raster_tile_priority_queue_required.cc |
index 3bf00ed33789aff3231aee88fe46898a24b498f9..e5bb3e7b5f60d6ca90fdc4678d11a2e174c24b38 100644 |
--- a/cc/resources/raster_tile_priority_queue_required.cc |
+++ b/cc/resources/raster_tile_priority_queue_required.cc |
@@ -4,6 +4,7 @@ |
#include "cc/resources/raster_tile_priority_queue_required.h" |
+#include "base/containers/hash_tables.h" |
#include "cc/resources/tiling_set_raster_queue_required.h" |
namespace cc { |
@@ -15,15 +16,30 @@ RasterTilePriorityQueueRequired::~RasterTilePriorityQueueRequired() { |
} |
void RasterTilePriorityQueueRequired::Build( |
- const std::vector<PictureLayerImpl::Pair>& paired_layers, |
+ const base::hash_map<int, PictureLayerTilingSet::Pair>& |
+ paired_picture_layer_tiling_sets, |
+ bool has_pending_tree, |
Type type) { |
- DCHECK_NE(static_cast<int>(type), static_cast<int>(Type::ALL)); |
- for (const auto& pair : paired_layers) { |
+ for (const auto& paired_tiling_set_pair : paired_picture_layer_tiling_sets) { |
+ const auto& paired_tiling_set = paired_tiling_set_pair.second; |
PictureLayerTilingSet* tiling_set = nullptr; |
- if (type == Type::REQUIRED_FOR_DRAW && pair.active) |
- tiling_set = pair.active->picture_layer_tiling_set(); |
- else if (type == Type::REQUIRED_FOR_ACTIVATION && pair.pending) |
- tiling_set = pair.pending->picture_layer_tiling_set(); |
+ switch (type) { |
+ case Type::REQUIRED_FOR_DRAW: { |
+ PictureLayerTilingSet* active = paired_tiling_set.active; |
+ if (active && active->HasValidTilePriorities()) |
+ tiling_set = active; |
+ break; |
+ } |
+ case Type::REQUIRED_FOR_ACTIVATION: { |
+ PictureLayerTilingSet* pending = paired_tiling_set.pending; |
+ if (has_pending_tree && pending && pending->HasValidTilePriorities()) |
+ tiling_set = pending; |
+ break; |
+ } |
+ case Type::ALL: |
+ NOTREACHED(); |
+ break; |
+ } |
if (!tiling_set) |
continue; |