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-23 02:02:10 +0300
committerNicholas Bishop <nicholasbishop@gmail.com>2006-12-23 02:02:10 +0300
commit48b62511bf9535dcaf484f5324c1776975b8791f (patch)
tree3d087e7bc13f3cffd7d1d9bba5debd86711c8676 /source/blender/src/multires.c
parent30cc7499c3fd93d6bce7fbdfb0966d124488ddb3 (diff)
Fix for bug #5372, multires - adding new multires level in Edit Mode causes odd behaviour
Also fixed a memory leak with multires+deformverts in editmode.
Diffstat (limited to 'source/blender/src/multires.c')
-rw-r--r--source/blender/src/multires.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/src/multires.c b/source/blender/src/multires.c
index 0d7000db691..ff8d1b94512 100644
--- a/source/blender/src/multires.c
+++ b/source/blender/src/multires.c
@@ -584,7 +584,7 @@ void multires_update_deformverts(Multires *mr, CustomData *src)
if(CustomData_has_layer(src, CD_MDEFORMVERT)) {
if(G.obedit) {
EditVert *eve= G.editMesh->verts.first;
- CustomData_add_layer(&mr->vdata, CD_MDEFORMVERT, 0, NULL, lvl->totvert);
+ CustomData_add_layer(&mr->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, lvl->totvert);
for(i=0; i<lvl->totvert; ++i) {
CustomData_from_em_block(&G.editMesh->vdata, &mr->vdata, eve->data, i);
eve= eve->next;
@@ -1062,6 +1062,8 @@ void multires_level_to_mesh(Object *ob, Mesh *me)
free_edgelist(&em->edges);
free_facelist(&em->faces);
+ EM_free_data_layer(&G.editMesh->vdata, CD_MDEFORMVERT);
+
eves= MEM_callocN(sizeof(EditVert)*lvl->totvert, "editvert pointers");
} else {
CustomData_free_layer(&me->vdata, CD_MVERT, me->totvert);
@@ -1223,9 +1225,10 @@ void multires_level_to_mesh(Object *ob, Mesh *me)
}
- if(em)
+ if(em) {
MEM_freeN(eves);
- else {
+ DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+ } else {
multires_edge_level_update(ob,me);
DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL);