| 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 |