Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1714)

Unified Diff: cc/resources/direct_raster_worker_pool.cc

Issue 168083002: cc: Remove RasterWorkerPool::Task. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove RasterTaskQueueIterator Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/resources/direct_raster_worker_pool.h ('k') | cc/resources/image_raster_worker_pool.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/direct_raster_worker_pool.cc
diff --git a/cc/resources/direct_raster_worker_pool.cc b/cc/resources/direct_raster_worker_pool.cc
index 9bad9a5e43bd724db44a0ae8bea615fd9540c2ae..947320802d2ee6d1815bd488d973bea48019b12a 100644
--- a/cc/resources/direct_raster_worker_pool.cc
+++ b/cc/resources/direct_raster_worker_pool.cc
@@ -34,16 +34,22 @@ DirectRasterWorkerPool::~DirectRasterWorkerPool() {
DCHECK_EQ(0u, completed_tasks_.size());
}
-void DirectRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
+void DirectRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) {
TRACE_EVENT0("cc", "DirectRasterWorkerPool::ScheduleTasks");
+ DCHECK_EQ(queue->required_for_activation_count,
+ static_cast<size_t>(
+ std::count_if(queue->items.begin(),
+ queue->items.end(),
+ RasterTaskQueue::Item::IsRequiredForActivation)));
+
raster_tasks_pending_ = true;
raster_tasks_required_for_activation_pending_ = true;
scoped_refptr<internal::WorkerPoolTask>
new_raster_required_for_activation_finished_task(
CreateRasterRequiredForActivationFinishedTask(
- queue->required_for_activation_count()));
+ queue->required_for_activation_count));
scoped_refptr<internal::WorkerPoolTask> new_raster_finished_task(
CreateRasterFinishedTask());
@@ -52,13 +58,16 @@ void DirectRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
// TODO(reveman): Remove this once only tasks for which
// ::ScheduleOnOriginThread has been called need to be canceled.
if (run_tasks_on_origin_thread_pending_) {
- for (RasterTaskQueueIterator it(&raster_tasks_); it; ++it) {
- internal::RasterWorkerPoolTask* task = *it;
-
- if (std::find_if(queue->tasks_.begin(),
- queue->tasks_.end(),
- RasterTask::Queue::QueuedTask::TaskComparator(task)) ==
- queue->tasks_.end())
+ for (RasterTaskQueue::Item::Vector::const_iterator it =
+ raster_tasks_.items.begin();
+ it != raster_tasks_.items.end();
+ ++it) {
+ internal::RasterWorkerPoolTask* task = it->task;
+
+ if (std::find_if(queue->items.begin(),
+ queue->items.end(),
+ RasterTaskQueue::Item::TaskComparator(task)) ==
+ queue->items.end())
completed_tasks_.push_back(task);
}
}
@@ -132,14 +141,17 @@ void DirectRasterWorkerPool::RunTasksOnOriginThread() {
DCHECK(run_tasks_on_origin_thread_pending_);
run_tasks_on_origin_thread_pending_ = false;
- if (!raster_tasks_.tasks_.empty()) {
+ if (!raster_tasks_.items.empty()) {
GrContext* gr_context = context_provider_->GrContext();
// TODO(alokp): Implement TestContextProvider::GrContext().
if (gr_context)
gr_context->resetContext();
- 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) {
+ internal::RasterWorkerPoolTask* task = it->task;
DCHECK(!task->HasCompleted());
// First need to run all dependencies.
« no previous file with comments | « cc/resources/direct_raster_worker_pool.h ('k') | cc/resources/image_raster_worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698