| Index: dm/DMTask.h
|
| diff --git a/dm/DMTask.h b/dm/DMTask.h
|
| index e8598df85e00ee6001b3f2571f356a4ae91d7daa..cad8234c05b5047c3c31ddff642d2ab7c210c9cf 100644
|
| --- a/dm/DMTask.h
|
| +++ b/dm/DMTask.h
|
| @@ -4,28 +4,21 @@
|
| #include "DMReporter.h"
|
| #include "GrContextFactory.h"
|
| #include "SkRunnable.h"
|
| -#include "SkThreadPool.h"
|
|
|
| -// DM will run() these tasks on one of two threadpools, depending on the result
|
| -// of usesGpu(). The subclasses can call fail() to mark this task as failed,
|
| -// or make any number of spawnChild() calls to kick off dependent tasks.
|
| +// DM will run() these tasks on one of two threadpools.
|
| +// Subclasses can call fail() to mark this task as failed, or make any number of spawnChild() calls
|
| +// to kick off dependent tasks.
|
| //
|
| -// Task deletes itself when run.
|
| +// Tasks delete themselves when run.
|
|
|
| namespace DM {
|
|
|
| class TaskRunner;
|
|
|
| -class Task : public SkRunnable {
|
| -public:
|
| - Task(Reporter* reporter, TaskRunner* taskRunner);
|
| - Task(const Task& parent);
|
| - virtual ~Task();
|
| -
|
| - void run() SK_OVERRIDE;
|
| +class CpuTask;
|
|
|
| - virtual void draw() = 0;
|
| - virtual bool usesGpu() const = 0;
|
| +class Task {
|
| +public:
|
| virtual bool shouldSkip() const = 0;
|
| virtual SkString name() const = 0;
|
|
|
| @@ -34,19 +27,37 @@ public:
|
| int depth() const { return fDepth; }
|
|
|
| protected:
|
| - void spawnChild(Task* task);
|
| - void fail(const char* msg = NULL);
|
| + Task(Reporter* reporter, TaskRunner* taskRunner);
|
| + Task(const Task& parent);
|
| + virtual ~Task() {}
|
|
|
| - // This can only be safely called from a GPU task's draw() method.
|
| - GrContextFactory* getGrContextFactory() const;
|
| + void fail(const char* msg = NULL);
|
| + void finish();
|
| + void spawnChild(CpuTask* task); // For now we don't allow GPU child tasks.
|
|
|
| private:
|
| - // Both unowned.
|
| - Reporter* fReporter;
|
| - TaskRunner* fTaskRunner;
|
| + Reporter* fReporter; // Unowned.
|
| + TaskRunner* fTaskRunner; // Unowned.
|
| int fDepth;
|
| +};
|
| +
|
| +class CpuTask : public Task, public SkRunnable {
|
| +public:
|
| + CpuTask(Reporter* reporter, TaskRunner* taskRunner);
|
| + CpuTask(const Task& parent);
|
| + virtual ~CpuTask() {}
|
| +
|
| + void run() SK_OVERRIDE;
|
| + virtual void draw() = 0;
|
| +};
|
| +
|
| +class GpuTask : public Task, public SkTRunnable<GrContextFactory> {
|
| + public:
|
| + GpuTask(Reporter* reporter, TaskRunner* taskRunner);
|
| + virtual ~GpuTask() {}
|
|
|
| - typedef SkRunnable INHERITED;
|
| + void run(GrContextFactory&) SK_OVERRIDE;
|
| + virtual void draw(GrContextFactory*) = 0;
|
| };
|
|
|
| } // namespace DM
|
|
|