diff options
author | Lukas Toenne <lukas.toenne@googlemail.com> | 2012-09-05 12:12:22 +0400 |
---|---|---|
committer | Lukas Toenne <lukas.toenne@googlemail.com> | 2012-09-05 12:12:22 +0400 |
commit | f3a91f461ca94557a8125915544676cc765a5709 (patch) | |
tree | 523d86edcfa09add40858b6137d819963f583d65 /intern/cycles/kernel/osl/osl_shader.h | |
parent | 99fcec33347c94228ca0c225dcbdd7cb6117e99b (diff) |
Fix for OSL memory leak. The context creation for OSL is now done in the shader_setup_* functions, since it should specific to the sample being worked on. The the context release then happens in the kernel_shader functions after shader evaluation is done. Care has to be taken to ensure the shader_release function is also called in cases where the path integration is cancelled early, this was the main cause for unreleased contexts and subsequent new allocations.
Diffstat (limited to 'intern/cycles/kernel/osl/osl_shader.h')
-rw-r--r-- | intern/cycles/kernel/osl/osl_shader.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/intern/cycles/kernel/osl/osl_shader.h b/intern/cycles/kernel/osl/osl_shader.h index 815557ed203..e55f98d4d02 100644 --- a/intern/cycles/kernel/osl/osl_shader.h +++ b/intern/cycles/kernel/osl/osl_shader.h @@ -79,7 +79,8 @@ public: const float3 omega_in, const float3 omega_out); /* release */ - static void release(KernelGlobals *kg, const ShaderData *sd); + static void init(KernelGlobals *kg, ShaderData *sd); + static void release(KernelGlobals *kg, ShaderData *sd); }; CCL_NAMESPACE_END |