Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Unified Diff: cc/resources/raster_tile_priority_queue_all.cc

Issue 900073003: cc: Rework how picture layer tiling set gets into raster queues. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/resources/raster_tile_priority_queue_all.h ('k') | cc/resources/raster_tile_priority_queue_required.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9baa9b32de7177e67738a675a78dda8f1cf65779..77e4a0b4b5b7f461bc91f53facf598554623fe83 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())
+ 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
« no previous file with comments | « cc/resources/raster_tile_priority_queue_all.h ('k') | cc/resources/raster_tile_priority_queue_required.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698