diff options
Diffstat (limited to 'intern/cycles/device/cuda/device_cuda_impl.cpp')
-rw-r--r-- | intern/cycles/device/cuda/device_cuda_impl.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/intern/cycles/device/cuda/device_cuda_impl.cpp b/intern/cycles/device/cuda/device_cuda_impl.cpp index 83f7bc10911..13f2ec530b0 100644 --- a/intern/cycles/device/cuda/device_cuda_impl.cpp +++ b/intern/cycles/device/cuda/device_cuda_impl.cpp @@ -2401,16 +2401,6 @@ void CUDADevice::thread_run(DeviceTask &task) } } -class CUDADeviceTask : public Task { - public: - CUDADeviceTask(CUDADevice *device, DeviceTask &task) : task(task) - { - run = function_bind(&CUDADevice::thread_run, device, task); - } - - DeviceTask task; -}; - void CUDADevice::task_add(DeviceTask &task) { CUDAContextScope scope(this); @@ -2426,7 +2416,10 @@ void CUDADevice::task_add(DeviceTask &task) film_convert(task, task.buffer, task.rgba_byte, task.rgba_half); } else { - task_pool.push(new CUDADeviceTask(this, task)); + task_pool.push([=] { + DeviceTask task_copy = task; + thread_run(task_copy); + }); } } |