summaryrefslogtreecommitdiffstats
path: root/cc/resources/tile_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cc/resources/tile_manager.cc')
-rw-r--r--cc/resources/tile_manager.cc35
1 files changed, 19 insertions, 16 deletions
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc
index 60e69fa..9418451 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;