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 816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
827 | 827 |
828 // Schedule running of |tasks|. This replaces any previously | 828 // Schedule running of |tasks|. This replaces any previously |
829 // scheduled tasks and effectively cancels all tasks not present | 829 // scheduled tasks and effectively cancels all tasks not present |
830 // in |tasks|. | 830 // in |tasks|. |
831 raster_worker_pool_->ScheduleTasks(&tasks); | 831 raster_worker_pool_->ScheduleTasks(&tasks); |
832 | 832 |
833 did_check_for_completed_tasks_since_last_schedule_tasks_ = false; | 833 did_check_for_completed_tasks_since_last_schedule_tasks_ = false; |
834 } | 834 } |
835 | 835 |
836 RasterWorkerPool::Task TileManager::CreateImageDecodeTask( | 836 RasterWorkerPool::Task TileManager::CreateImageDecodeTask( |
837 Tile* tile, skia::LazyPixelRef* pixel_ref) { | 837 Tile* tile, SkPixelRef* pixel_ref) { |
838 return RasterWorkerPool::CreateImageDecodeTask( | 838 return RasterWorkerPool::CreateImageDecodeTask( |
839 pixel_ref, | 839 pixel_ref, |
840 tile->layer_id(), | 840 tile->layer_id(), |
841 rendering_stats_instrumentation_, | 841 rendering_stats_instrumentation_, |
842 base::Bind(&TileManager::OnImageDecodeTaskCompleted, | 842 base::Bind(&TileManager::OnImageDecodeTaskCompleted, |
843 base::Unretained(this), | 843 base::Unretained(this), |
844 tile->layer_id(), | 844 tile->layer_id(), |
845 base::Unretained(pixel_ref))); | 845 base::Unretained(pixel_ref))); |
846 } | 846 } |
847 | 847 |
848 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { | 848 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { |
849 ManagedTileState& mts = tile->managed_state(); | 849 ManagedTileState& mts = tile->managed_state(); |
850 | 850 |
851 scoped_ptr<ScopedResource> resource = | 851 scoped_ptr<ScopedResource> resource = |
852 resource_pool_->AcquireResource(tile->tile_size_.size()); | 852 resource_pool_->AcquireResource(tile->tile_size_.size()); |
853 const ScopedResource* const_resource = resource.get(); | 853 const ScopedResource* const_resource = resource.get(); |
854 | 854 |
855 // Create and queue all image decode tasks that this tile depends on. | 855 // Create and queue all image decode tasks that this tile depends on. |
856 RasterWorkerPool::Task::Set decode_tasks; | 856 RasterWorkerPool::Task::Set decode_tasks; |
857 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; | 857 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; |
858 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(), | 858 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(), |
859 tile->contents_scale(), | 859 tile->contents_scale(), |
860 tile->picture_pile()); | 860 tile->picture_pile()); |
861 iter; ++iter) { | 861 iter; ++iter) { |
862 skia::LazyPixelRef* pixel_ref = *iter; | 862 SkPixelRef* pixel_ref = *iter; |
863 uint32_t id = pixel_ref->getGenerationID(); | 863 uint32_t id = pixel_ref->getGenerationID(); |
864 | 864 |
865 // Append existing image decode task if available. | 865 // Append existing image decode task if available. |
866 PixelRefTaskMap::iterator decode_task_it = existing_pixel_refs.find(id); | 866 PixelRefTaskMap::iterator decode_task_it = existing_pixel_refs.find(id); |
867 if (decode_task_it != existing_pixel_refs.end()) { | 867 if (decode_task_it != existing_pixel_refs.end()) { |
868 decode_tasks.Insert(decode_task_it->second); | 868 decode_tasks.Insert(decode_task_it->second); |
869 continue; | 869 continue; |
870 } | 870 } |
871 | 871 |
872 // Create and append new image decode task for this pixel ref. | 872 // Create and append new image decode task for this pixel ref. |
(...skipping 17 matching lines...) Expand all Loading... |
890 base::Bind(&TileManager::OnRasterTaskCompleted, | 890 base::Bind(&TileManager::OnRasterTaskCompleted, |
891 base::Unretained(this), | 891 base::Unretained(this), |
892 tile->id(), | 892 tile->id(), |
893 base::Passed(&resource), | 893 base::Passed(&resource), |
894 mts.raster_mode), | 894 mts.raster_mode), |
895 &decode_tasks); | 895 &decode_tasks); |
896 } | 896 } |
897 | 897 |
898 void TileManager::OnImageDecodeTaskCompleted( | 898 void TileManager::OnImageDecodeTaskCompleted( |
899 int layer_id, | 899 int layer_id, |
900 skia::LazyPixelRef* pixel_ref, | 900 SkPixelRef* pixel_ref, |
901 bool was_canceled) { | 901 bool was_canceled) { |
902 // If the task was canceled, we need to clean it up | 902 // If the task was canceled, we need to clean it up |
903 // from |image_decode_tasks_|. | 903 // from |image_decode_tasks_|. |
904 if (!was_canceled) | 904 if (!was_canceled) |
905 return; | 905 return; |
906 | 906 |
907 LayerPixelRefTaskMap::iterator layer_it = | 907 LayerPixelRefTaskMap::iterator layer_it = |
908 image_decode_tasks_.find(layer_id); | 908 image_decode_tasks_.find(layer_id); |
909 | 909 |
910 if (layer_it == image_decode_tasks_.end()) | 910 if (layer_it == image_decode_tasks_.end()) |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
982 flags)); | 982 flags)); |
983 DCHECK(tiles_.find(tile->id()) == tiles_.end()); | 983 DCHECK(tiles_.find(tile->id()) == tiles_.end()); |
984 | 984 |
985 tiles_[tile->id()] = tile; | 985 tiles_[tile->id()] = tile; |
986 used_layer_counts_[tile->layer_id()]++; | 986 used_layer_counts_[tile->layer_id()]++; |
987 prioritized_tiles_dirty_ = true; | 987 prioritized_tiles_dirty_ = true; |
988 return tile; | 988 return tile; |
989 } | 989 } |
990 | 990 |
991 } // namespace cc | 991 } // namespace cc |
OLD | NEW |