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

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: fix cc_unittests 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 7f98a161e937f5d6dedd1063d6199a95821dd910..09b65bc06b84fa04f8eea4f6bbc17572b7851bce 100644
--- a/cc/resources/raster_worker_pool.cc
+++ b/cc/resources/raster_worker_pool.cc
@@ -179,14 +179,15 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
// Overridden from internal::WorkerPoolTask:
virtual void ScheduleOnOriginThread(internal::WorkerPoolTaskClient* client)
OVERRIDE {
- DCHECK(!use_gpu_rasterization());
- if (buffer_)
+ if (use_gpu_rasterization())
return;
+ DCHECK(!buffer_);
buffer_ = client->AcquireBufferForRaster(this, &stride_);
}
virtual void CompleteOnOriginThread(internal::WorkerPoolTaskClient* client)
OVERRIDE {
- DCHECK(!use_gpu_rasterization());
+ if (use_gpu_rasterization())
+ return;
buffer_ = NULL;
client->OnRasterCompleted(this, analysis_);
}
@@ -458,18 +459,28 @@ 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_schedule_);
DCHECK(!did_run_ || did_complete_);
}
+void WorkerPoolTask::WillSchedule() { DCHECK(!did_schedule_); }
+
+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() {
DCHECK(did_schedule_);
DCHECK(!did_complete_);
+ did_schedule_ = false;
did_complete_ = true;
}
@@ -622,6 +633,19 @@ 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 =
+ static_cast<internal::WorkerPoolTask*>(it->first);
+
+ if (!task->HasBeenScheduled()) {
+ task->WillSchedule();
+ task->ScheduleOnOriginThread(this);
+ task->DidSchedule();
+ }
+ }
+
g_task_graph_runner.Pointer()->SetTaskGraph(namespace_token_, graph);
}
@@ -645,11 +669,16 @@ void RasterWorkerPool::RunGpuRasterTasks(const RasterTaskVector& tasks) {
internal::RasterWorkerPoolTask* task = it->get();
DCHECK(task->use_gpu_rasterization());
+ task->WillSchedule();
+ task->ScheduleOnOriginThread(this);
task->DidSchedule();
+
task->WillRun();
task->RunOnOriginThread(resource_provider_, context_provider_);
task->DidRun();
+
task->WillComplete();
+ task->CompleteOnOriginThread(this);
task->DidComplete();
completed_gpu_raster_tasks_.push_back(task);
@@ -735,8 +764,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