| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/tile_manager.h" | 5 #include "cc/resources/tile_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 653 Tile* tile = prioritized_tile.tile(); | 653 Tile* tile = prioritized_tile.tile(); |
| 654 scoped_ptr<ScopedResource> resource = | 654 scoped_ptr<ScopedResource> resource = |
| 655 resource_pool_->AcquireResource(tile->desired_texture_size(), | 655 resource_pool_->AcquireResource(tile->desired_texture_size(), |
| 656 tile_task_runner_->GetResourceFormat()); | 656 tile_task_runner_->GetResourceFormat()); |
| 657 const ScopedResource* const_resource = resource.get(); | 657 const ScopedResource* const_resource = resource.get(); |
| 658 | 658 |
| 659 // Create and queue all image decode tasks that this tile depends on. | 659 // Create and queue all image decode tasks that this tile depends on. |
| 660 ImageDecodeTask::Vector decode_tasks; | 660 ImageDecodeTask::Vector decode_tasks; |
| 661 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; | 661 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; |
| 662 std::vector<SkPixelRef*> pixel_refs; | 662 std::vector<SkPixelRef*> pixel_refs; |
| 663 tile->raster_source()->GatherPixelRefs( | 663 prioritized_tile.raster_source()->GatherPixelRefs( |
| 664 tile->content_rect(), tile->contents_scale(), &pixel_refs); | 664 tile->content_rect(), tile->contents_scale(), &pixel_refs); |
| 665 for (SkPixelRef* pixel_ref : pixel_refs) { | 665 for (SkPixelRef* pixel_ref : pixel_refs) { |
| 666 uint32_t id = pixel_ref->getGenerationID(); | 666 uint32_t id = pixel_ref->getGenerationID(); |
| 667 | 667 |
| 668 // Append existing image decode task if available. | 668 // Append existing image decode task if available. |
| 669 PixelRefTaskMap::iterator decode_task_it = existing_pixel_refs.find(id); | 669 PixelRefTaskMap::iterator decode_task_it = existing_pixel_refs.find(id); |
| 670 if (decode_task_it != existing_pixel_refs.end()) { | 670 if (decode_task_it != existing_pixel_refs.end()) { |
| 671 decode_tasks.push_back(decode_task_it->second); | 671 decode_tasks.push_back(decode_task_it->second); |
| 672 continue; | 672 continue; |
| 673 } | 673 } |
| 674 | 674 |
| 675 // Create and append new image decode task for this pixel ref. | 675 // Create and append new image decode task for this pixel ref. |
| 676 scoped_refptr<ImageDecodeTask> decode_task = | 676 scoped_refptr<ImageDecodeTask> decode_task = |
| 677 CreateImageDecodeTask(tile, pixel_ref); | 677 CreateImageDecodeTask(tile, pixel_ref); |
| 678 decode_tasks.push_back(decode_task); | 678 decode_tasks.push_back(decode_task); |
| 679 existing_pixel_refs[id] = decode_task; | 679 existing_pixel_refs[id] = decode_task; |
| 680 } | 680 } |
| 681 | 681 |
| 682 return make_scoped_refptr(new RasterTaskImpl( | 682 return make_scoped_refptr(new RasterTaskImpl( |
| 683 const_resource, tile->raster_source(), tile->content_rect(), | 683 const_resource, prioritized_tile.raster_source(), tile->content_rect(), |
| 684 tile->contents_scale(), prioritized_tile.priority().resolution, | 684 tile->contents_scale(), prioritized_tile.priority().resolution, |
| 685 tile->layer_id(), static_cast<const void*>(tile), | 685 tile->layer_id(), static_cast<const void*>(tile), |
| 686 tile->source_frame_number(), tile->use_picture_analysis(), | 686 tile->source_frame_number(), tile->use_picture_analysis(), |
| 687 base::Bind(&TileManager::OnRasterTaskCompleted, base::Unretained(this), | 687 base::Bind(&TileManager::OnRasterTaskCompleted, base::Unretained(this), |
| 688 tile->id(), base::Passed(&resource)), | 688 tile->id(), base::Passed(&resource)), |
| 689 &decode_tasks)); | 689 &decode_tasks)); |
| 690 } | 690 } |
| 691 | 691 |
| 692 void TileManager::OnImageDecodeTaskCompleted(int layer_id, | 692 void TileManager::OnImageDecodeTaskCompleted(int layer_id, |
| 693 SkPixelRef* pixel_ref, | 693 SkPixelRef* pixel_ref, |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 966 result -= other; | 966 result -= other; |
| 967 return result; | 967 return result; |
| 968 } | 968 } |
| 969 | 969 |
| 970 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { | 970 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { |
| 971 return memory_bytes_ > limit.memory_bytes_ || | 971 return memory_bytes_ > limit.memory_bytes_ || |
| 972 resource_count_ > limit.resource_count_; | 972 resource_count_ > limit.resource_count_; |
| 973 } | 973 } |
| 974 | 974 |
| 975 } // namespace cc | 975 } // namespace cc |
| OLD | NEW |