| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/resources/raster_tile_priority_queue.h" | 5 #include "cc/resources/raster_tile_priority_queue_all.h" |
| 6 | 6 |
| 7 #include "cc/resources/tiling_set_raster_queue_all.h" | 7 #include "cc/resources/tiling_set_raster_queue_all.h" |
| 8 #include "cc/resources/tiling_set_raster_queue_required.h" | |
| 9 | 8 |
| 10 namespace cc { | 9 namespace cc { |
| 11 | 10 |
| 12 namespace { | 11 namespace { |
| 13 | 12 |
| 14 class RasterOrderComparator { | 13 class RasterOrderComparator { |
| 15 public: | 14 public: |
| 16 explicit RasterOrderComparator(TreePriority tree_priority) | 15 explicit RasterOrderComparator(TreePriority tree_priority) |
| 17 : tree_priority_(tree_priority) {} | 16 : tree_priority_(tree_priority) {} |
| 18 | 17 |
| 19 bool operator()( | 18 bool operator()( |
| 20 const RasterTilePriorityQueue::PairedTilingSetQueue* a, | 19 const RasterTilePriorityQueueAll::PairedTilingSetQueue* a, |
| 21 const RasterTilePriorityQueue::PairedTilingSetQueue* b) const { | 20 const RasterTilePriorityQueueAll::PairedTilingSetQueue* b) const { |
| 22 // Note that in this function, we have to return true if and only if | 21 // Note that in this function, we have to return true if and only if |
| 23 // a is strictly lower priority than b. Note that for the sake of | 22 // a is strictly lower priority than b. Note that for the sake of |
| 24 // completeness, empty queue is considered to have lowest priority. | 23 // completeness, empty queue is considered to have lowest priority. |
| 25 if (a->IsEmpty() || b->IsEmpty()) | 24 if (a->IsEmpty() || b->IsEmpty()) |
| 26 return b->IsEmpty() < a->IsEmpty(); | 25 return b->IsEmpty() < a->IsEmpty(); |
| 27 | 26 |
| 28 WhichTree a_tree = a->NextTileIteratorTree(tree_priority_); | 27 WhichTree a_tree = a->NextTileIteratorTree(tree_priority_); |
| 29 const TilingSetRasterQueue* a_queue = | 28 const TilingSetRasterQueueAll* a_queue = |
| 30 a_tree == ACTIVE_TREE ? a->active_queue() : a->pending_queue(); | 29 a_tree == ACTIVE_TREE ? a->active_queue() : a->pending_queue(); |
| 31 | 30 |
| 32 WhichTree b_tree = b->NextTileIteratorTree(tree_priority_); | 31 WhichTree b_tree = b->NextTileIteratorTree(tree_priority_); |
| 33 const TilingSetRasterQueue* b_queue = | 32 const TilingSetRasterQueueAll* b_queue = |
| 34 b_tree == ACTIVE_TREE ? b->active_queue() : b->pending_queue(); | 33 b_tree == ACTIVE_TREE ? b->active_queue() : b->pending_queue(); |
| 35 | 34 |
| 36 const Tile* a_tile = a_queue->Top(); | 35 const Tile* a_tile = a_queue->Top(); |
| 37 const Tile* b_tile = b_queue->Top(); | 36 const Tile* b_tile = b_queue->Top(); |
| 38 | 37 |
| 39 const TilePriority& a_priority = | 38 const TilePriority& a_priority = |
| 40 a_tile->priority_for_tree_priority(tree_priority_); | 39 a_tile->priority_for_tree_priority(tree_priority_); |
| 41 const TilePriority& b_priority = | 40 const TilePriority& b_priority = |
| 42 b_tile->priority_for_tree_priority(tree_priority_); | 41 b_tile->priority_for_tree_priority(tree_priority_); |
| 43 bool prioritize_low_res = tree_priority_ == SMOOTHNESS_TAKES_PRIORITY; | 42 bool prioritize_low_res = tree_priority_ == SMOOTHNESS_TAKES_PRIORITY; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 } | 76 } |
| 78 | 77 |
| 79 return b_priority.IsHigherPriorityThan(a_priority); | 78 return b_priority.IsHigherPriorityThan(a_priority); |
| 80 } | 79 } |
| 81 | 80 |
| 82 private: | 81 private: |
| 83 TreePriority tree_priority_; | 82 TreePriority tree_priority_; |
| 84 }; | 83 }; |
| 85 | 84 |
| 86 WhichTree HigherPriorityTree(TreePriority tree_priority, | 85 WhichTree HigherPriorityTree(TreePriority tree_priority, |
| 87 const TilingSetRasterQueue* active_queue, | 86 const TilingSetRasterQueueAll* active_queue, |
| 88 const TilingSetRasterQueue* pending_queue, | 87 const TilingSetRasterQueueAll* pending_queue, |
| 89 const Tile* shared_tile) { | 88 const Tile* shared_tile) { |
| 90 switch (tree_priority) { | 89 switch (tree_priority) { |
| 91 case SMOOTHNESS_TAKES_PRIORITY: { | 90 case SMOOTHNESS_TAKES_PRIORITY: { |
| 92 const Tile* active_tile = shared_tile ? shared_tile : active_queue->Top(); | 91 const Tile* active_tile = shared_tile ? shared_tile : active_queue->Top(); |
| 93 const Tile* pending_tile = | 92 const Tile* pending_tile = |
| 94 shared_tile ? shared_tile : pending_queue->Top(); | 93 shared_tile ? shared_tile : pending_queue->Top(); |
| 95 | 94 |
| 96 const TilePriority& active_priority = active_tile->priority(ACTIVE_TREE); | 95 const TilePriority& active_priority = active_tile->priority(ACTIVE_TREE); |
| 97 const TilePriority& pending_priority = | 96 const TilePriority& pending_priority = |
| 98 pending_tile->priority(PENDING_TREE); | 97 pending_tile->priority(PENDING_TREE); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 120 if (active_priority.IsHigherPriorityThan(pending_priority)) | 119 if (active_priority.IsHigherPriorityThan(pending_priority)) |
| 121 return ACTIVE_TREE; | 120 return ACTIVE_TREE; |
| 122 return PENDING_TREE; | 121 return PENDING_TREE; |
| 123 } | 122 } |
| 124 default: | 123 default: |
| 125 NOTREACHED(); | 124 NOTREACHED(); |
| 126 return ACTIVE_TREE; | 125 return ACTIVE_TREE; |
| 127 } | 126 } |
| 128 } | 127 } |
| 129 | 128 |
| 130 scoped_ptr<TilingSetRasterQueue> CreateTilingSetRasterQueue( | 129 scoped_ptr<TilingSetRasterQueueAll> CreateTilingSetRasterQueue( |
| 131 PictureLayerImpl* layer, | 130 PictureLayerImpl* layer, |
| 132 TreePriority tree_priority, | 131 TreePriority tree_priority) { |
| 133 RasterTilePriorityQueue::Type type) { | |
| 134 if (!layer) | 132 if (!layer) |
| 135 return nullptr; | 133 return nullptr; |
| 136 PictureLayerTilingSet* tiling_set = layer->picture_layer_tiling_set(); | 134 PictureLayerTilingSet* tiling_set = layer->picture_layer_tiling_set(); |
| 137 if (type == RasterTilePriorityQueue::Type::ALL) { | 135 bool prioritize_low_res = tree_priority == SMOOTHNESS_TAKES_PRIORITY; |
| 138 bool prioritize_low_res = tree_priority == SMOOTHNESS_TAKES_PRIORITY; | 136 return make_scoped_ptr( |
| 139 return make_scoped_ptr( | 137 new TilingSetRasterQueueAll(tiling_set, prioritize_low_res)); |
| 140 new TilingSetRasterQueueAll(tiling_set, prioritize_low_res)); | |
| 141 } | |
| 142 return make_scoped_ptr(new TilingSetRasterQueueRequired(tiling_set, type)); | |
| 143 } | 138 } |
| 144 | 139 |
| 145 } // namespace | 140 } // namespace |
| 146 | 141 |
| 147 RasterTilePriorityQueue::RasterTilePriorityQueue() { | 142 RasterTilePriorityQueueAll::RasterTilePriorityQueueAll() { |
| 148 } | 143 } |
| 149 | 144 |
| 150 RasterTilePriorityQueue::~RasterTilePriorityQueue() { | 145 RasterTilePriorityQueueAll::~RasterTilePriorityQueueAll() { |
| 151 } | 146 } |
| 152 | 147 |
| 153 void RasterTilePriorityQueue::Build( | 148 void RasterTilePriorityQueueAll::Build( |
| 154 const std::vector<PictureLayerImpl::Pair>& paired_layers, | 149 const std::vector<PictureLayerImpl::Pair>& paired_layers, |
| 155 TreePriority tree_priority, | 150 TreePriority tree_priority) { |
| 156 Type type) { | |
| 157 tree_priority_ = tree_priority; | 151 tree_priority_ = tree_priority; |
| 158 for (std::vector<PictureLayerImpl::Pair>::const_iterator it = | 152 for (std::vector<PictureLayerImpl::Pair>::const_iterator it = |
| 159 paired_layers.begin(); | 153 paired_layers.begin(); |
| 160 it != paired_layers.end(); | 154 it != paired_layers.end(); ++it) { |
| 161 ++it) { | |
| 162 paired_queues_.push_back( | 155 paired_queues_.push_back( |
| 163 make_scoped_ptr(new PairedTilingSetQueue(*it, tree_priority_, type))); | 156 make_scoped_ptr(new PairedTilingSetQueue(*it, tree_priority_))); |
| 164 } | 157 } |
| 165 paired_queues_.make_heap(RasterOrderComparator(tree_priority_)); | 158 paired_queues_.make_heap(RasterOrderComparator(tree_priority_)); |
| 166 } | 159 } |
| 167 | 160 |
| 168 void RasterTilePriorityQueue::Reset() { | 161 bool RasterTilePriorityQueueAll::IsEmpty() const { |
| 169 paired_queues_.clear(); | |
| 170 } | |
| 171 | |
| 172 bool RasterTilePriorityQueue::IsEmpty() const { | |
| 173 return paired_queues_.empty() || paired_queues_.front()->IsEmpty(); | 162 return paired_queues_.empty() || paired_queues_.front()->IsEmpty(); |
| 174 } | 163 } |
| 175 | 164 |
| 176 Tile* RasterTilePriorityQueue::Top() { | 165 Tile* RasterTilePriorityQueueAll::Top() { |
| 177 DCHECK(!IsEmpty()); | 166 DCHECK(!IsEmpty()); |
| 178 return paired_queues_.front()->Top(tree_priority_); | 167 return paired_queues_.front()->Top(tree_priority_); |
| 179 } | 168 } |
| 180 | 169 |
| 181 void RasterTilePriorityQueue::Pop() { | 170 void RasterTilePriorityQueueAll::Pop() { |
| 182 DCHECK(!IsEmpty()); | 171 DCHECK(!IsEmpty()); |
| 183 | 172 |
| 184 paired_queues_.pop_heap(RasterOrderComparator(tree_priority_)); | 173 paired_queues_.pop_heap(RasterOrderComparator(tree_priority_)); |
| 185 PairedTilingSetQueue* paired_queue = paired_queues_.back(); | 174 PairedTilingSetQueue* paired_queue = paired_queues_.back(); |
| 186 paired_queue->Pop(tree_priority_); | 175 paired_queue->Pop(tree_priority_); |
| 187 paired_queues_.push_heap(RasterOrderComparator(tree_priority_)); | 176 paired_queues_.push_heap(RasterOrderComparator(tree_priority_)); |
| 188 } | 177 } |
| 189 | 178 |
| 190 RasterTilePriorityQueue::PairedTilingSetQueue::PairedTilingSetQueue() { | 179 RasterTilePriorityQueueAll::PairedTilingSetQueue::PairedTilingSetQueue() { |
| 191 } | 180 } |
| 192 | 181 |
| 193 RasterTilePriorityQueue::PairedTilingSetQueue::PairedTilingSetQueue( | 182 RasterTilePriorityQueueAll::PairedTilingSetQueue::PairedTilingSetQueue( |
| 194 const PictureLayerImpl::Pair& layer_pair, | 183 const PictureLayerImpl::Pair& layer_pair, |
| 195 TreePriority tree_priority, | 184 TreePriority tree_priority) |
| 196 Type type) | 185 : active_queue_( |
| 197 : has_both_layers_(false) { | 186 CreateTilingSetRasterQueue(layer_pair.active, tree_priority)), |
| 198 switch (type) { | 187 pending_queue_( |
| 199 case RasterTilePriorityQueue::Type::ALL: | 188 CreateTilingSetRasterQueue(layer_pair.pending, tree_priority)), |
| 200 has_both_layers_ = layer_pair.active && layer_pair.pending; | 189 has_both_layers_(layer_pair.active && layer_pair.pending) { |
| 201 active_queue_ = | |
| 202 CreateTilingSetRasterQueue(layer_pair.active, tree_priority, type); | |
| 203 pending_queue_ = | |
| 204 CreateTilingSetRasterQueue(layer_pair.pending, tree_priority, type); | |
| 205 break; | |
| 206 case RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION: | |
| 207 pending_queue_ = | |
| 208 CreateTilingSetRasterQueue(layer_pair.pending, tree_priority, type); | |
| 209 break; | |
| 210 case RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW: | |
| 211 active_queue_ = | |
| 212 CreateTilingSetRasterQueue(layer_pair.active, tree_priority, type); | |
| 213 break; | |
| 214 } | |
| 215 DCHECK_IMPLIES(has_both_layers_, active_queue_ && pending_queue_); | |
| 216 | |
| 217 SkipTilesReturnedByTwin(tree_priority); | 190 SkipTilesReturnedByTwin(tree_priority); |
| 218 | 191 |
| 219 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | 192 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 220 "PairedTilingSetQueue::PairedTilingSetQueue", | 193 "PairedTilingSetQueue::PairedTilingSetQueue", |
| 221 TRACE_EVENT_SCOPE_THREAD, "state", StateAsValue()); | 194 TRACE_EVENT_SCOPE_THREAD, "state", StateAsValue()); |
| 222 } | 195 } |
| 223 | 196 |
| 224 RasterTilePriorityQueue::PairedTilingSetQueue::~PairedTilingSetQueue() { | 197 RasterTilePriorityQueueAll::PairedTilingSetQueue::~PairedTilingSetQueue() { |
| 225 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | 198 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 226 "PairedTilingSetQueue::~PairedTilingSetQueue", | 199 "PairedTilingSetQueue::~PairedTilingSetQueue", |
| 227 TRACE_EVENT_SCOPE_THREAD, "state", StateAsValue()); | 200 TRACE_EVENT_SCOPE_THREAD, "state", StateAsValue()); |
| 228 } | 201 } |
| 229 | 202 |
| 230 bool RasterTilePriorityQueue::PairedTilingSetQueue::IsEmpty() const { | 203 bool RasterTilePriorityQueueAll::PairedTilingSetQueue::IsEmpty() const { |
| 231 return (!active_queue_ || active_queue_->IsEmpty()) && | 204 return (!active_queue_ || active_queue_->IsEmpty()) && |
| 232 (!pending_queue_ || pending_queue_->IsEmpty()); | 205 (!pending_queue_ || pending_queue_->IsEmpty()); |
| 233 } | 206 } |
| 234 | 207 |
| 235 Tile* RasterTilePriorityQueue::PairedTilingSetQueue::Top( | 208 Tile* RasterTilePriorityQueueAll::PairedTilingSetQueue::Top( |
| 236 TreePriority tree_priority) { | 209 TreePriority tree_priority) { |
| 237 DCHECK(!IsEmpty()); | 210 DCHECK(!IsEmpty()); |
| 238 | 211 |
| 239 WhichTree next_tree = NextTileIteratorTree(tree_priority); | 212 WhichTree next_tree = NextTileIteratorTree(tree_priority); |
| 240 TilingSetRasterQueue* next_queue = | 213 TilingSetRasterQueueAll* next_queue = |
| 241 next_tree == ACTIVE_TREE ? active_queue_.get() : pending_queue_.get(); | 214 next_tree == ACTIVE_TREE ? active_queue_.get() : pending_queue_.get(); |
| 242 DCHECK(next_queue && !next_queue->IsEmpty()); | 215 DCHECK(next_queue && !next_queue->IsEmpty()); |
| 243 Tile* tile = next_queue->Top(); | 216 Tile* tile = next_queue->Top(); |
| 244 DCHECK(returned_tiles_for_debug_.find(tile) == | 217 DCHECK(returned_tiles_for_debug_.find(tile) == |
| 245 returned_tiles_for_debug_.end()); | 218 returned_tiles_for_debug_.end()); |
| 246 return tile; | 219 return tile; |
| 247 } | 220 } |
| 248 | 221 |
| 249 void RasterTilePriorityQueue::PairedTilingSetQueue::Pop( | 222 void RasterTilePriorityQueueAll::PairedTilingSetQueue::Pop( |
| 250 TreePriority tree_priority) { | 223 TreePriority tree_priority) { |
| 251 DCHECK(!IsEmpty()); | 224 DCHECK(!IsEmpty()); |
| 252 | 225 |
| 253 WhichTree next_tree = NextTileIteratorTree(tree_priority); | 226 WhichTree next_tree = NextTileIteratorTree(tree_priority); |
| 254 TilingSetRasterQueue* next_queue = | 227 TilingSetRasterQueueAll* next_queue = |
| 255 next_tree == ACTIVE_TREE ? active_queue_.get() : pending_queue_.get(); | 228 next_tree == ACTIVE_TREE ? active_queue_.get() : pending_queue_.get(); |
| 256 DCHECK(next_queue && !next_queue->IsEmpty()); | 229 DCHECK(next_queue && !next_queue->IsEmpty()); |
| 257 DCHECK(returned_tiles_for_debug_.insert(next_queue->Top()).second); | 230 DCHECK(returned_tiles_for_debug_.insert(next_queue->Top()).second); |
| 258 next_queue->Pop(); | 231 next_queue->Pop(); |
| 259 | 232 |
| 260 SkipTilesReturnedByTwin(tree_priority); | 233 SkipTilesReturnedByTwin(tree_priority); |
| 261 | 234 |
| 262 // If no empty, use Top to do DCHECK the next iterator. | 235 // If no empty, use Top to do DCHECK the next iterator. |
| 263 DCHECK(IsEmpty() || Top(tree_priority)); | 236 DCHECK(IsEmpty() || Top(tree_priority)); |
| 264 } | 237 } |
| 265 | 238 |
| 266 void RasterTilePriorityQueue::PairedTilingSetQueue::SkipTilesReturnedByTwin( | 239 void RasterTilePriorityQueueAll::PairedTilingSetQueue::SkipTilesReturnedByTwin( |
| 267 TreePriority tree_priority) { | 240 TreePriority tree_priority) { |
| 268 if (!has_both_layers_) | 241 if (!has_both_layers_) |
| 269 return; | 242 return; |
| 270 | 243 |
| 271 // We have both layers (active and pending) thus we can encounter shared | 244 // We have both layers (active and pending) thus we can encounter shared |
| 272 // tiles twice (from the active iterator and from the pending iterator). | 245 // tiles twice (from the active iterator and from the pending iterator). |
| 273 while (!IsEmpty()) { | 246 while (!IsEmpty()) { |
| 274 WhichTree next_tree = NextTileIteratorTree(tree_priority); | 247 WhichTree next_tree = NextTileIteratorTree(tree_priority); |
| 275 TilingSetRasterQueue* next_queue = | 248 TilingSetRasterQueueAll* next_queue = |
| 276 next_tree == ACTIVE_TREE ? active_queue_.get() : pending_queue_.get(); | 249 next_tree == ACTIVE_TREE ? active_queue_.get() : pending_queue_.get(); |
| 277 DCHECK(next_queue && !next_queue->IsEmpty()); | 250 DCHECK(next_queue && !next_queue->IsEmpty()); |
| 278 | 251 |
| 279 // Accept all non-shared tiles. | 252 // Accept all non-shared tiles. |
| 280 const Tile* tile = next_queue->Top(); | 253 const Tile* tile = next_queue->Top(); |
| 281 if (!tile->is_shared()) | 254 if (!tile->is_shared()) |
| 282 break; | 255 break; |
| 283 | 256 |
| 284 // Accept a shared tile if the next tree is the higher priority one | 257 // Accept a shared tile if the next tree is the higher priority one |
| 285 // corresponding the iterator (active or pending) which usually (but due | 258 // corresponding the iterator (active or pending) which usually (but due |
| 286 // to spiral iterators not always) returns the shared tile first. | 259 // to spiral iterators not always) returns the shared tile first. |
| 287 if (next_tree == HigherPriorityTree(tree_priority, nullptr, nullptr, tile)) | 260 if (next_tree == HigherPriorityTree(tree_priority, nullptr, nullptr, tile)) |
| 288 break; | 261 break; |
| 289 | 262 |
| 290 next_queue->Pop(); | 263 next_queue->Pop(); |
| 291 } | 264 } |
| 292 } | 265 } |
| 293 | 266 |
| 294 WhichTree RasterTilePriorityQueue::PairedTilingSetQueue::NextTileIteratorTree( | 267 WhichTree |
| 268 RasterTilePriorityQueueAll::PairedTilingSetQueue::NextTileIteratorTree( |
| 295 TreePriority tree_priority) const { | 269 TreePriority tree_priority) const { |
| 296 DCHECK(!IsEmpty()); | 270 DCHECK(!IsEmpty()); |
| 297 | 271 |
| 298 // If we only have one queue with tiles, return it. | 272 // If we only have one queue with tiles, return it. |
| 299 if (!active_queue_ || active_queue_->IsEmpty()) | 273 if (!active_queue_ || active_queue_->IsEmpty()) |
| 300 return PENDING_TREE; | 274 return PENDING_TREE; |
| 301 if (!pending_queue_ || pending_queue_->IsEmpty()) | 275 if (!pending_queue_ || pending_queue_->IsEmpty()) |
| 302 return ACTIVE_TREE; | 276 return ACTIVE_TREE; |
| 303 | 277 |
| 304 // Now both iterators have tiles, so we have to decide based on tree priority. | 278 // Now both iterators have tiles, so we have to decide based on tree priority. |
| 305 return HigherPriorityTree(tree_priority, active_queue_.get(), | 279 return HigherPriorityTree(tree_priority, active_queue_.get(), |
| 306 pending_queue_.get(), nullptr); | 280 pending_queue_.get(), nullptr); |
| 307 } | 281 } |
| 308 | 282 |
| 309 scoped_refptr<base::debug::ConvertableToTraceFormat> | 283 scoped_refptr<base::debug::ConvertableToTraceFormat> |
| 310 RasterTilePriorityQueue::PairedTilingSetQueue::StateAsValue() const { | 284 RasterTilePriorityQueueAll::PairedTilingSetQueue::StateAsValue() const { |
| 311 scoped_refptr<base::debug::TracedValue> state = | 285 scoped_refptr<base::debug::TracedValue> state = |
| 312 new base::debug::TracedValue(); | 286 new base::debug::TracedValue(); |
| 313 | 287 |
| 314 bool active_queue_has_tile = active_queue_ && !active_queue_->IsEmpty(); | 288 bool active_queue_has_tile = active_queue_ && !active_queue_->IsEmpty(); |
| 315 TilePriority::PriorityBin active_priority_bin = TilePriority::EVENTUALLY; | 289 TilePriority::PriorityBin active_priority_bin = TilePriority::EVENTUALLY; |
| 316 TilePriority::PriorityBin pending_priority_bin = TilePriority::EVENTUALLY; | 290 TilePriority::PriorityBin pending_priority_bin = TilePriority::EVENTUALLY; |
| 317 if (active_queue_has_tile) { | 291 if (active_queue_has_tile) { |
| 318 active_priority_bin = | 292 active_priority_bin = |
| 319 active_queue_->Top()->priority(ACTIVE_TREE).priority_bin; | 293 active_queue_->Top()->priority(ACTIVE_TREE).priority_bin; |
| 320 pending_priority_bin = | 294 pending_priority_bin = |
| (...skipping 18 matching lines...) Expand all Loading... |
| 339 | 313 |
| 340 state->BeginDictionary("pending_queue"); | 314 state->BeginDictionary("pending_queue"); |
| 341 state->SetBoolean("has_tile", active_queue_has_tile); | 315 state->SetBoolean("has_tile", active_queue_has_tile); |
| 342 state->SetInteger("active_priority_bin", active_priority_bin); | 316 state->SetInteger("active_priority_bin", active_priority_bin); |
| 343 state->SetInteger("pending_priority_bin", pending_priority_bin); | 317 state->SetInteger("pending_priority_bin", pending_priority_bin); |
| 344 state->EndDictionary(); | 318 state->EndDictionary(); |
| 345 return state; | 319 return state; |
| 346 } | 320 } |
| 347 | 321 |
| 348 } // namespace cc | 322 } // namespace cc |
| OLD | NEW |