Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-02-14 20:11:47 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-02-14 20:11:47 +0400
commitadbd84c320d8b0781e97d09055f6cde4920b79f8 (patch)
tree4df5496bd2d96a0115aa45526555097f73caad3c /intern/cycles/render/scene.cpp
parenta47af30561ea9b0b2933a4af202a560b3576ee11 (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.cpp14
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 */