diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-02-14 20:11:47 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-02-14 20:11:47 +0400 |
commit | adbd84c320d8b0781e97d09055f6cde4920b79f8 (patch) | |
tree | 4df5496bd2d96a0115aa45526555097f73caad3c /intern/cycles/render/scene.cpp | |
parent | a47af30561ea9b0b2933a4af202a560b3576ee11 (diff) |
Fix #34121: OSL + persistent images option was not freeing shader memory properly,
causing memory to increase continuously during animation render.
Diffstat (limited to 'intern/cycles/render/scene.cpp')
-rw-r--r-- | intern/cycles/render/scene.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/intern/cycles/render/scene.cpp b/intern/cycles/render/scene.cpp index 093bfecf88e..a1fcffa94a4 100644 --- a/intern/cycles/render/scene.cpp +++ b/intern/cycles/render/scene.cpp @@ -85,6 +85,12 @@ void Scene::free_memory(bool final) foreach(ParticleSystem *p, particle_systems) delete p; + shaders.clear(); + meshes.clear(); + objects.clear(); + lights.clear(); + particle_systems.clear(); + if(device) { camera->device_free(device, &dscene); filter->device_free(device, &dscene); @@ -118,13 +124,6 @@ void Scene::free_memory(bool final) delete curve_system_manager; delete image_manager; } - else { - shaders.clear(); - meshes.clear(); - objects.clear(); - lights.clear(); - particle_systems.clear(); - } } void Scene::device_update(Device *device_, Progress& progress) @@ -257,6 +256,7 @@ bool Scene::need_reset() void Scene::reset() { + shader_manager->reset(this); shader_manager->add_default(this); /* ensure all objects are updated */ |