Index: cc/raster/task_graph_runner.h |
diff --git a/cc/raster/task_graph_runner.h b/cc/raster/task_graph_runner.h |
index 23094ef5a7ef3c81a6cae0fbde931c57c11efe98..53fdea885b0801eadd0979694dede01bb695c577 100644 |
--- a/cc/raster/task_graph_runner.h |
+++ b/cc/raster/task_graph_runner.h |
@@ -15,12 +15,23 @@ |
#include "base/logging.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/threading/simple_thread.h" |
+#include "base/time/time.h" |
#include "cc/base/cc_export.h" |
+#include "cc/raster/task_category.h" |
namespace cc { |
class TaskGraphRunner; |
+class CC_EXPORT TaskWorker { |
+ public: |
+ // TODO(prashant.n): Find better names. |
+ virtual bool TaskSpeedup() = 0; |
+ virtual bool TaskSlowdown() = 0; |
+ virtual bool TaskDone() = 0; |
+}; |
+ |
// A task which can be run by a TaskGraphRunner. To run a Task, it should be |
// inserted into a TaskGraph, which can then be scheduled on the |
// TaskGraphRunner. |
@@ -33,6 +44,10 @@ class CC_EXPORT Task : public base::RefCountedThreadSafe<Task> { |
// safety. |
virtual void RunOnWorkerThread() = 0; |
+ TaskWorker* GetTaskWorker() { return worker_; } |
+ void AttachTaskWorker(TaskWorker* worker); |
+ void DetachTaskWorker(); |
+ |
void WillRun(); |
void DidRun(); |
bool HasFinishedRunning() const; |
@@ -43,10 +58,25 @@ class CC_EXPORT Task : public base::RefCountedThreadSafe<Task> { |
Task(); |
virtual ~Task(); |
+ TaskWorker* worker_; |
bool will_run_; |
bool did_run_; |
}; |
+class CC_EXPORT AutoDetachTaskWorker { |
+ public: |
+ explicit AutoDetachTaskWorker(Task& task, TaskWorker* worker) : task_(task) { |
+ DCHECK(worker); |
+ task_.AttachTaskWorker(worker); |
+ } |
+ |
+ ~AutoDetachTaskWorker() { task_.DetachTaskWorker(); } |
+ |
+ private: |
+ Task& task_; |
+ DISALLOW_COPY_AND_ASSIGN(AutoDetachTaskWorker); |
+}; |
+ |
// A task dependency graph describes the order in which to execute a set |
// of tasks. Dependencies are represented as edges. Each node is assigned |
// a category, a priority and a run count that matches the number of |