Fix T40195: cycles smoke + persistent images animation render not working correct.

This commit is contained in:
Brecht Van Lommel 2014-05-19 14:45:52 +02:00
parent f44e743c72
commit c6d9b11b70
3 changed files with 14 additions and 0 deletions

@ -744,6 +744,17 @@ void ImageManager::device_pack_images(Device *device, DeviceScene *dscene, Progr
}
}
void ImageManager::device_free_builtin(Device *device, DeviceScene *dscene)
{
for(size_t slot = 0; slot < images.size(); slot++)
if(images[slot] && images[slot]->builtin_data)
device_free_image(device, dscene, slot + tex_image_byte_start);
for(size_t slot = 0; slot < float_images.size(); slot++)
if(float_images[slot] && float_images[slot]->builtin_data)
device_free_image(device, dscene, slot);
}
void ImageManager::device_free(Device *device, DeviceScene *dscene)
{
for(size_t slot = 0; slot < images.size(); slot++)

@ -62,6 +62,7 @@ public:
void device_update(Device *device, DeviceScene *dscene, Progress& progress);
void device_free(Device *device, DeviceScene *dscene);
void device_free_builtin(Device *device, DeviceScene *dscene);
void set_osl_texture_system(void *texture_system);
void set_pack_images(bool pack_images_);

@ -109,6 +109,8 @@ void Scene::free_memory(bool final)
if(!params.persistent_data || final)
image_manager->device_free(device, &dscene);
else
image_manager->device_free_builtin(device, &dscene);
lookup_tables->device_free(device, &dscene);
}