| Index: dm/DMTaskRunner.cpp
|
| diff --git a/dm/DMTaskRunner.cpp b/dm/DMTaskRunner.cpp
|
| index bd53ce615a61134271a1751add333c4eec480ff6..e0bd97728871d88b1797a0f9255b45d7e94d405a 100644
|
| --- a/dm/DMTaskRunner.cpp
|
| +++ b/dm/DMTaskRunner.cpp
|
| @@ -3,48 +3,19 @@
|
|
|
| namespace DM {
|
|
|
| +TaskRunner::TaskRunner(int cpuThreads, int gpuThreads) : fCpu(cpuThreads), fGpu(gpuThreads) {}
|
|
|
| -TaskRunner::TaskRunner(int cputhreads)
|
| - : fMain(cputhreads)
|
| - , fGpu(1) {
|
| - // Enqueue a task on the GPU thread to create a GrContextFactory.
|
| - struct Create : public SkRunnable {
|
| - Create(GrContextFactory** ptr) : fPtr(ptr) {}
|
| - void run() SK_OVERRIDE {
|
| - *fPtr = SkNEW(GrContextFactory);
|
| - delete this;
|
| - }
|
| - GrContextFactory** fPtr;
|
| - };
|
| - fGpu.add(SkNEW_ARGS(Create, (&fGrContextFactory)));
|
| -}
|
| +void TaskRunner::add(CpuTask* task) { fCpu.add(task); }
|
|
|
| -void TaskRunner::add(Task* task) {
|
| - if (task->usesGpu()) {
|
| - fGpu.add(task);
|
| - } else {
|
| - fMain.add(task);
|
| - }
|
| -}
|
| +void TaskRunner::add(GpuTask* task) { fGpu.add(task); }
|
|
|
| void TaskRunner::wait() {
|
| - // Enqueue a task on the GPU thread to destroy the GrContextFactory.
|
| - struct Delete : public SkRunnable {
|
| - Delete(GrContextFactory* ptr) : fPtr(ptr) {}
|
| - void run() SK_OVERRIDE {
|
| - delete fPtr;
|
| - delete this;
|
| - }
|
| - GrContextFactory* fPtr;
|
| - };
|
| - fGpu.add(SkNEW_ARGS(Delete, (fGrContextFactory)));
|
| -
|
| - // These wait calls block until the threadpool is done. We don't allow
|
| - // children to spawn new GPU tasks so we can wait for that first knowing
|
| - // we'll never try to add to it later. Same can't be said of fMain: fGpu
|
| - // and fMain can both add tasks to fMain, so we have to wait for that last.
|
| + // These wait calls block until each threadpool is done. We don't allow
|
| + // spawning new child GPU tasks, so we can wait for that first knowing
|
| + // we'll never try to add to it later. Same can't be said of the CPU pool:
|
| + // both CPU and GPU tasks can spawn off new CPU work, so we wait for that last.
|
| fGpu.wait();
|
| - fMain.wait();
|
| + fCpu.wait();
|
| }
|
|
|
| } // namespace DM
|
|
|