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 |