| Index: dm/DMTask.h
|
| diff --git a/dm/DMTask.h b/dm/DMTask.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..744fd6bb9c0634fcee000e09960ea1eadfa91e71
|
| --- /dev/null
|
| +++ b/dm/DMTask.h
|
| @@ -0,0 +1,43 @@
|
| +#ifndef DMTask_DEFINED
|
| +#define DMTask_DEFINED
|
| +
|
| +#include "DMReporter.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.
|
| +//
|
| +// Task deletes itself when run.
|
| +
|
| +namespace DM {
|
| +
|
| +class TaskRunner;
|
| +
|
| +class Task : public SkRunnable {
|
| +public:
|
| + Task(Reporter* reporter, TaskRunner* taskRunner);
|
| + Task(const Task& that);
|
| + virtual ~Task();
|
| +
|
| + void run();
|
| +
|
| + virtual void draw() = 0;
|
| + virtual bool usesGpu() const = 0;
|
| + virtual bool shouldSkip() const = 0;
|
| + virtual SkString name() const = 0;
|
| +
|
| +protected:
|
| + void spawnChild(Task* task);
|
| + void fail();
|
| +
|
| +private:
|
| + // Both unowned.
|
| + Reporter* fReporter;
|
| + TaskRunner* fTaskRunner;
|
| +};
|
| +
|
| +} // namespace DM
|
| +
|
| +#endif // DMTask_DEFINED
|
|
|