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

Unified Diff: cc/resources/raster_worker_pool.cc

Issue 140333006: cc: Move internal::Task::did_schedule_ to internal::WorkerPoolTask. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup 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/raster_worker_pool.h ('k') | cc/resources/raster_worker_pool_perftest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/raster_worker_pool.cc
diff --git a/cc/resources/raster_worker_pool.cc b/cc/resources/raster_worker_pool.cc
index 0da81e247c64a1059e5587cb1d83651ef78c266d..b43bd4edfd9e7fb2abec405e5c8d03ae01aecd7b 100644
--- a/cc/resources/raster_worker_pool.cc
+++ b/cc/resources/raster_worker_pool.cc
@@ -456,13 +456,22 @@ int g_num_raster_threads = 0;
namespace internal {
-WorkerPoolTask::WorkerPoolTask() : did_complete_(false) {}
+WorkerPoolTask::WorkerPoolTask() : did_schedule_(false), did_complete_(false) {}
WorkerPoolTask::~WorkerPoolTask() {
DCHECK_EQ(did_schedule_, did_complete_);
DCHECK(!did_run_ || did_complete_);
}
+void WorkerPoolTask::WillSchedule() {}
+
+void WorkerPoolTask::DidSchedule() {
+ did_schedule_ = true;
+ did_complete_ = false;
+}
+
+bool WorkerPoolTask::HasBeenScheduled() const { return did_schedule_; }
+
void WorkerPoolTask::WillComplete() { DCHECK(!did_complete_); }
void WorkerPoolTask::DidComplete() {
@@ -620,6 +629,17 @@ void RasterWorkerPool::SetTaskGraph(TaskGraph* graph) {
TRACE_EVENT1(
"cc", "RasterWorkerPool::SetTaskGraph", "num_tasks", graph->size());
+ for (internal::GraphNode::Map::iterator it = graph->begin();
+ it != graph->end();
+ ++it) {
+ internal::WorkerPoolTask* task =
vmpstr 2014/02/05 16:56:23 Can you do a DCHECK here to ensure that this task
reveman 2014/02/05 18:00:00 The task might have finished running. We can't kno
vmpstr 2014/02/05 18:07:42 I think that makes sense. From the task perspectiv
reveman 2014/02/05 19:52:42 Take a look at latest patch.
+ static_cast<internal::WorkerPoolTask*>(it->first);
+
+ task->WillSchedule();
+ task->ScheduleOnOriginThread(this);
+ task->DidSchedule();
+ }
+
g_task_graph_runner.Pointer()->SetTaskGraph(namespace_token_, graph);
}
@@ -643,6 +663,7 @@ void RasterWorkerPool::RunGpuRasterTasks(const RasterTaskVector& tasks) {
internal::RasterWorkerPoolTask* task = it->get();
DCHECK(task->use_gpu_rasterization());
+ task->WillSchedule();
vmpstr 2014/02/05 16:56:23 Does this also need a ScheduleOnOriginThread? Ther
reveman 2014/02/05 18:00:00 I agree. Did the same for CompleteOnOriginThread()
vmpstr 2014/02/05 18:07:42 Thanks! I think it looks nice now (ie symmetrical
task->DidSchedule();
task->WillRun();
task->RunOnOriginThread(resource_provider_, context_provider_);
@@ -733,8 +754,6 @@ internal::GraphNode* RasterWorkerPool::CreateGraphNodeForRasterTask(
const internal::Task::Vector& decode_tasks,
unsigned priority,
TaskGraph* graph) {
- DCHECK(!raster_task->HasCompleted());
-
internal::GraphNode* raster_node =
CreateGraphNodeForTask(raster_task, priority, graph);
« no previous file with comments | « cc/resources/raster_worker_pool.h ('k') | cc/resources/raster_worker_pool_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698