| Index: cc/resources/pixel_buffer_raster_worker_pool.cc
|
| diff --git a/cc/resources/pixel_buffer_raster_worker_pool.cc b/cc/resources/pixel_buffer_raster_worker_pool.cc
|
| index 21ee1ccfbbe8849ccd6b5498a7ea322e13fc3278..b5b978874048255be38b40e26c11e1f24fad75b0 100644
|
| --- a/cc/resources/pixel_buffer_raster_worker_pool.cc
|
| +++ b/cc/resources/pixel_buffer_raster_worker_pool.cc
|
| @@ -88,9 +88,15 @@ void PixelBufferRasterWorkerPool::Shutdown() {
|
| DCHECK_EQ(completed_raster_tasks_.size(), raster_task_states_.size());
|
| }
|
|
|
| -void PixelBufferRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
|
| +void PixelBufferRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) {
|
| TRACE_EVENT0("cc", "PixelBufferRasterWorkerPool::ScheduleTasks");
|
|
|
| + DCHECK_EQ(queue->required_for_activation_count,
|
| + static_cast<size_t>(
|
| + std::count_if(queue->items.begin(),
|
| + queue->items.end(),
|
| + RasterTaskQueue::Item::IsRequiredForActivation)));
|
| +
|
| if (!should_notify_client_if_no_tasks_are_pending_)
|
| TRACE_EVENT_ASYNC_BEGIN0("cc", "ScheduledTasks", this);
|
|
|
| @@ -101,8 +107,11 @@ void PixelBufferRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
|
|
|
| // Build new raster task state map.
|
| RasterTaskStateMap new_raster_task_states;
|
| - for (RasterTaskQueueIterator it(queue); it; ++it) {
|
| - internal::RasterWorkerPoolTask* task = *it;
|
| + for (RasterTaskQueue::Item::Vector::const_iterator it = queue->items.begin();
|
| + it != queue->items.end();
|
| + ++it) {
|
| + const RasterTaskQueue::Item& item = *it;
|
| + internal::RasterWorkerPoolTask* task = item.task;
|
| DCHECK(new_raster_task_states.find(task) == new_raster_task_states.end());
|
|
|
| RasterTaskStateMap::iterator state_it = raster_task_states_.find(task);
|
| @@ -113,14 +122,14 @@ void PixelBufferRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
|
| // |raster_tasks_required_for_activation_| contains all tasks that need to
|
| // complete before we can send a "ready to activate" signal. Tasks that
|
| // have already completed should not be part of this set.
|
| - if (state != COMPLETED && it.required_for_activation())
|
| + if (state != COMPLETED && item.required_for_activation)
|
| raster_tasks_required_for_activation_.insert(task);
|
|
|
| raster_task_states_.erase(state_it);
|
| } else {
|
| DCHECK(!task->HasBeenScheduled());
|
| new_raster_task_states[task] = UNSCHEDULED;
|
| - if (it.required_for_activation())
|
| + if (item.required_for_activation)
|
| raster_tasks_required_for_activation_.insert(task);
|
| }
|
| }
|
| @@ -242,8 +251,11 @@ void PixelBufferRasterWorkerPool::OnRasterCompleted(
|
| // When priorites change, a raster task can be canceled as a result of
|
| // no longer being of high enough priority to fit in our throttled
|
| // raster task budget. The task has not yet completed in this case.
|
| - for (RasterTaskQueueIterator it(&raster_tasks_); it; ++it) {
|
| - if (*it == task) {
|
| + for (RasterTaskQueue::Item::Vector::const_iterator it =
|
| + raster_tasks_.items.begin();
|
| + it != raster_tasks_.items.end();
|
| + ++it) {
|
| + if (it->task == task) {
|
| raster_task_states_[task] = UNSCHEDULED;
|
| return;
|
| }
|
| @@ -498,8 +510,12 @@ void PixelBufferRasterWorkerPool::ScheduleMoreTasks() {
|
| size_t bytes_pending_upload = bytes_pending_upload_;
|
| bool did_throttle_raster_tasks = false;
|
|
|
| - for (RasterTaskQueueIterator it(&raster_tasks_); it; ++it) {
|
| - internal::RasterWorkerPoolTask* task = *it;
|
| + for (RasterTaskQueue::Item::Vector::const_iterator it =
|
| + raster_tasks_.items.begin();
|
| + it != raster_tasks_.items.end();
|
| + ++it) {
|
| + const RasterTaskQueue::Item& item = *it;
|
| + internal::RasterWorkerPoolTask* task = item.task;
|
|
|
| // |raster_task_states_| contains the state of all tasks that we have not
|
| // yet run reply callbacks for.
|
| @@ -546,7 +562,7 @@ void PixelBufferRasterWorkerPool::ScheduleMoreTasks() {
|
| InsertNodeForRasterTask(&graph_, task, task->dependencies(), priority++);
|
|
|
| tasks.container().push_back(task);
|
| - if (it.required_for_activation())
|
| + if (item.required_for_activation)
|
| tasks_required_for_activation.container().push_back(task);
|
| }
|
|
|
|
|