| Index: cc/resources/tile_manager.cc
|
| diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc
|
| index 4a4cfeaf27e340f9680c2260e4bdc4b92bb0aeb3..c96b5e27ffc643c55b808f524eb9054fff9c677a 100644
|
| --- a/cc/resources/tile_manager.cc
|
| +++ b/cc/resources/tile_manager.cc
|
| @@ -420,13 +420,6 @@ TileManager::~TileManager() {
|
|
|
| DCHECK_EQ(0u, bytes_releasable_);
|
| DCHECK_EQ(0u, resources_releasable_);
|
| -
|
| - for (std::vector<PictureLayerImpl*>::iterator it = layers_.begin();
|
| - it != layers_.end();
|
| - ++it) {
|
| - (*it)->DidUnregisterLayer();
|
| - }
|
| - layers_.clear();
|
| }
|
|
|
| void TileManager::Release(Tile* tile) {
|
| @@ -676,19 +669,6 @@ void TileManager::GetTilesWithAssignedBins(PrioritizedTileSet* tiles) {
|
| }
|
| }
|
|
|
| -void TileManager::CleanUpLayers() {
|
| - for (size_t i = 0; i < layers_.size(); ++i) {
|
| - if (layers_[i]->IsDrawnRenderSurfaceLayerListMember())
|
| - continue;
|
| -
|
| - layers_[i]->DidUnregisterLayer();
|
| - std::swap(layers_[i], layers_.back());
|
| - layers_.pop_back();
|
| - --i;
|
| - prioritized_tiles_dirty_ = true;
|
| - }
|
| -}
|
| -
|
| void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) {
|
| TRACE_EVENT0("cc", "TileManager::ManageTiles");
|
|
|
| @@ -698,8 +678,6 @@ void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) {
|
| prioritized_tiles_dirty_ = true;
|
| }
|
|
|
| - CleanUpLayers();
|
| -
|
| // We need to call CheckForCompletedTasks() once in-between each call
|
| // to ScheduleTasks() to prevent canceled tasks from being scheduled.
|
| if (!did_check_for_completed_tasks_since_last_schedule_tasks_) {
|
| @@ -1219,38 +1197,28 @@ scoped_refptr<Tile> TileManager::CreateTile(PicturePileImpl* picture_pile,
|
| return tile;
|
| }
|
|
|
| -void TileManager::RegisterPictureLayerImpl(PictureLayerImpl* layer) {
|
| - DCHECK(std::find(layers_.begin(), layers_.end(), layer) == layers_.end());
|
| - layers_.push_back(layer);
|
| -}
|
| -
|
| -void TileManager::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
|
| - std::vector<PictureLayerImpl*>::iterator it =
|
| - std::find(layers_.begin(), layers_.end(), layer);
|
| - DCHECK(it != layers_.end());
|
| - layers_.erase(it);
|
| -}
|
| -
|
| void TileManager::GetPairedPictureLayers(
|
| std::vector<PairedPictureLayer>* paired_layers) const {
|
| + const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers();
|
| +
|
| paired_layers->clear();
|
| // Reserve a maximum possible paired layers.
|
| - paired_layers->reserve(layers_.size());
|
| + paired_layers->reserve(layers.size());
|
|
|
| - for (std::vector<PictureLayerImpl*>::const_iterator it = layers_.begin();
|
| - it != layers_.end();
|
| + for (std::vector<PictureLayerImpl*>::const_iterator it = layers.begin();
|
| + it != layers.end();
|
| ++it) {
|
| PictureLayerImpl* layer = *it;
|
|
|
| - // This is a recycle tree layer, we can safely skip since the tiles on this
|
| - // layer have to be accessible via the active tree.
|
| - if (!layer->IsOnActiveOrPendingTree())
|
| + // TODO(vmpstr): Iterators and should handle this instead. crbug.com/381704
|
| + if (!layer->HasValidTilePriorities())
|
| continue;
|
|
|
| PictureLayerImpl* twin_layer = layer->GetTwinLayer();
|
|
|
| - // If the twin layer is recycled, it is not a valid twin.
|
| - if (twin_layer && !twin_layer->IsOnActiveOrPendingTree())
|
| + // Ignore the twin layer when tile priorities are invalid.
|
| + // TODO(vmpstr): Iterators should handle this instead. crbug.com/381704
|
| + if (twin_layer && !twin_layer->HasValidTilePriorities())
|
| twin_layer = NULL;
|
|
|
| PairedPictureLayer paired_layer;
|
| @@ -1450,6 +1418,8 @@ bool TileManager::RasterTileIterator::RasterOrderComparator::operator()(
|
|
|
| // If the bin is the same but the resolution is not, then the order will be
|
| // determined by whether we prioritize low res or not.
|
| + // TODO(vmpstr): Remove this when TilePriority is no longer a member of Tile
|
| + // class but instead produced by the iterators.
|
| if (b_priority.priority_bin == a_priority.priority_bin &&
|
| b_priority.resolution != a_priority.resolution) {
|
| // Non ideal resolution should be sorted lower than other resolutions.
|
| @@ -1639,8 +1609,10 @@ void TileManager::SetRasterizerForTesting(Rasterizer* rasterizer) {
|
| }
|
|
|
| bool TileManager::IsReadyToActivate() const {
|
| - for (std::vector<PictureLayerImpl*>::const_iterator it = layers_.begin();
|
| - it != layers_.end();
|
| + const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers();
|
| +
|
| + for (std::vector<PictureLayerImpl*>::const_iterator it = layers.begin();
|
| + it != layers.end();
|
| ++it) {
|
| if (!(*it)->AllTilesRequiredForActivationAreReadyToDraw())
|
| return false;
|
|
|