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:
authorNicholas Bishop <nicholasbishop@gmail.com>2006-12-02 00:35:27 +0300
committerNicholas Bishop <nicholasbishop@gmail.com>2006-12-02 00:35:27 +0300
commitb4b6dd26540c59c3aa3d9f5a2db0f8a7983e0488 (patch)
tree92271fbd3db2cfe047069d9f34b17fe97fcb2712 /source/blender/render
parente906417a3af8e146f54d4a53c3808704e157bab3 (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.c31
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);
}
}