diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2006-12-02 00:35:27 +0300 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2006-12-02 00:35:27 +0300 |
commit | b4b6dd26540c59c3aa3d9f5a2db0f8a7983e0488 (patch) | |
tree | 92271fbd3db2cfe047069d9f34b17fe97fcb2712 /source/blender/render | |
parent | e906417a3af8e146f54d4a53c3808704e157bab3 (diff) |
Simplified/fixed code for rendering with multires+modifiers, no more unfree memory warnings
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 31 |
1 files changed, 3 insertions, 28 deletions
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index e713f361ebc..4142c5198d1 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -77,6 +77,7 @@ #include "BKE_ipo.h" #include "BKE_image.h" #include "BKE_lattice.h" +#include "BKE_library.h" #include "BKE_material.h" #include "BKE_main.h" #include "BKE_mball.h" @@ -1830,32 +1831,7 @@ static void init_render_mesh(Render *re, Object *ob, Object *par, int only_verts to allow multires to be applied with modifiers. */ if(me->mr) { me_store= me; - - { - Mesh *men= MEM_callocN(sizeof(Mesh),"mrm render mesh"); - men->totvert= me->totvert; - men->totedge= me->totedge; - men->totface= me->totface; - men->mvert= MEM_dupallocN(me->mvert); - men->medge= MEM_dupallocN(me->medge); - men->mface= MEM_dupallocN(me->mface); - if(me->mr) { - MultiresLevel *lvl, *nlvl; - men->mr= MEM_dupallocN(me->mr); - men->mr->levels.first= men->mr->levels.last= NULL; - for(lvl= me->mr->levels.first; lvl; lvl= lvl->next) { - nlvl= MEM_dupallocN(lvl); - BLI_addtail(&men->mr->levels,nlvl); - nlvl->verts= MEM_dupallocN(lvl->verts); - nlvl->faces= MEM_dupallocN(lvl->faces); - nlvl->edges= MEM_dupallocN(lvl->edges); - multires_calc_level_maps(nlvl); - } - } - - me= men; - - } + me= copy_mesh(me); ob->data= me; } @@ -2094,8 +2070,7 @@ static void init_render_mesh(Render *re, Object *ob, Object *par, int only_verts dm->release(dm); if(me_store) { - free_mesh(me_store); - MEM_freeN(me_store); + free_libblock(&G.main->mesh, &me_store->id); } } |