Index: cc/resources/tile_manager.cc |
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc |
index 60e69faccdb2b30ee6a9f864bedf5b2e611378bb..941845124fdbc43fd06c5ef9a0c1ee4614bc22f6 100644 |
--- a/cc/resources/tile_manager.cc |
+++ b/cc/resources/tile_manager.cc |
@@ -214,7 +214,7 @@ TileManager::~TileManager() { |
CleanUpReleasedTiles(); |
DCHECK_EQ(0u, tiles_.size()); |
- RasterWorkerPool::RasterTask::Queue empty[NUM_RASTER_WORKER_POOL_TYPES]; |
+ RasterTaskQueue empty[NUM_RASTER_WORKER_POOL_TYPES]; |
raster_worker_pool_delegate_->ScheduleTasks(empty); |
// This should finish all pending tasks and release any uninitialized |
@@ -354,9 +354,8 @@ void TileManager::GetTilesWithAssignedBins(PrioritizedTileSet* tiles) { |
const ManagedTileState::TileVersion& tile_version = |
tile->GetTileVersionForDrawing(); |
bool tile_is_ready_to_draw = tile_version.IsReadyToDraw(); |
- bool tile_is_active = |
- tile_is_ready_to_draw || |
- !mts.tile_versions[mts.raster_mode].raster_task_.is_null(); |
+ bool tile_is_active = tile_is_ready_to_draw || |
+ mts.tile_versions[mts.raster_mode].raster_task_; |
// Get the active priority and bin. |
TilePriority active_priority = tile->priority(ACTIVE_TREE); |
@@ -686,7 +685,7 @@ void TileManager::AssignGpuMemoryToTiles( |
if (raster_bytes_if_rastered <= max_raster_bytes) { |
// If we don't have the required version, and it's not in flight |
// then we'll have to pay to create a new task. |
- if (!tile_version.resource_ && tile_version.raster_task_.is_null()) { |
+ if (!tile_version.resource_ && !tile_version.raster_task_) { |
tile_bytes += bytes_if_allocated; |
tile_resources++; |
} |
@@ -819,15 +818,17 @@ void TileManager::ScheduleTasks( |
DCHECK(tile_version.requires_resource()); |
DCHECK(!tile_version.resource_); |
- if (tile_version.raster_task_.is_null()) |
+ if (!tile_version.raster_task_) |
tile_version.raster_task_ = CreateRasterTask(tile); |
size_t pool_type = tile->use_gpu_rasterization() |
? RASTER_WORKER_POOL_TYPE_DIRECT |
: RASTER_WORKER_POOL_TYPE_DEFAULT; |
- raster_queue_[pool_type] |
- .Append(tile_version.raster_task_, tile->required_for_activation()); |
+ raster_queue_[pool_type].items.push_back(RasterTaskQueue::Item( |
+ tile_version.raster_task_.get(), tile->required_for_activation())); |
+ raster_queue_[pool_type].required_for_activation_count += |
+ tile->required_for_activation(); |
} |
// We must reduce the amount of unused resoruces before calling |
@@ -842,7 +843,7 @@ void TileManager::ScheduleTasks( |
did_check_for_completed_tasks_since_last_schedule_tasks_ = false; |
} |
-RasterWorkerPool::Task TileManager::CreateImageDecodeTask( |
+scoped_refptr<internal::WorkerPoolTask> TileManager::CreateImageDecodeTask( |
Tile* tile, |
SkPixelRef* pixel_ref) { |
return RasterWorkerPool::CreateImageDecodeTask( |
@@ -855,7 +856,8 @@ RasterWorkerPool::Task TileManager::CreateImageDecodeTask( |
base::Unretained(pixel_ref))); |
} |
-RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { |
+scoped_refptr<internal::RasterWorkerPoolTask> TileManager::CreateRasterTask( |
+ Tile* tile) { |
ManagedTileState& mts = tile->managed_state(); |
scoped_ptr<ScopedResource> resource = |
@@ -863,7 +865,7 @@ RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { |
const ScopedResource* const_resource = resource.get(); |
// Create and queue all image decode tasks that this tile depends on. |
- RasterWorkerPool::Task::Set decode_tasks; |
+ internal::WorkerPoolTask::Vector decode_tasks; |
PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; |
for (PicturePileImpl::PixelRefIterator iter( |
tile->content_rect(), tile->contents_scale(), tile->picture_pile()); |
@@ -875,13 +877,14 @@ RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { |
// Append existing image decode task if available. |
PixelRefTaskMap::iterator decode_task_it = existing_pixel_refs.find(id); |
if (decode_task_it != existing_pixel_refs.end()) { |
- decode_tasks.Insert(decode_task_it->second); |
+ decode_tasks.push_back(decode_task_it->second); |
continue; |
} |
// Create and append new image decode task for this pixel ref. |
- RasterWorkerPool::Task decode_task = CreateImageDecodeTask(tile, pixel_ref); |
- decode_tasks.Insert(decode_task); |
+ scoped_refptr<internal::WorkerPoolTask> decode_task = |
+ CreateImageDecodeTask(tile, pixel_ref); |
+ decode_tasks.push_back(decode_task); |
existing_pixel_refs[id] = decode_task; |
} |
@@ -942,8 +945,8 @@ void TileManager::OnRasterTaskCompleted( |
Tile* tile = it->second; |
ManagedTileState& mts = tile->managed_state(); |
ManagedTileState::TileVersion& tile_version = mts.tile_versions[raster_mode]; |
- DCHECK(!tile_version.raster_task_.is_null()); |
- tile_version.raster_task_.Reset(); |
+ DCHECK(tile_version.raster_task_); |
+ tile_version.raster_task_ = NULL; |
if (was_canceled) { |
++update_visible_tiles_stats_.canceled_count; |