[Bf-blender-cvs] [a917e14afa2] soc-2017-normal-tools: Fixed memalloc bug in lnorspacearr and removed BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL flag
Rohan Rathi
noreply at git.blender.org
Sun Aug 13 19:19:08 CEST 2017
Commit: a917e14afa20a2ca29e8fd8b55382825f296a0cf
Author: Rohan Rathi
Date: Sun Aug 13 19:26:25 2017 +0530
Branches: soc-2017-normal-tools
https://developer.blender.org/rBa917e14afa20a2ca29e8fd8b55382825f296a0cf
Fixed memalloc bug in lnorspacearr and removed BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL flag
===================================================================
M source/blender/bmesh/intern/bmesh_mesh.c
M source/blender/bmesh/intern/bmesh_opdefines.c
M source/blender/editors/mesh/editmesh_tools.c
===================================================================
diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c
index 48f0b2f1804..91c0a9c49db 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@ -1093,6 +1093,7 @@ void BM_lnorspace_rebuild(BMesh *bm, bool preserve_clnor)
}
}
+ BKE_lnor_spacearr_clear(bm->lnor_spacearr);
BM_loops_calc_normal_vcos(bm, NULL, NULL, NULL, true, M_PI, r_lnors, bm->lnor_spacearr, NULL, cd_loop_clnors_offset, true);
MEM_freeN(r_lnors);
@@ -1154,15 +1155,10 @@ static void BM_lnorspace_err(BMesh *bm)
temp->lspacearr = NULL;
BKE_lnor_spacearr_init(temp, bm->totloop);
-
- for (int i = 0; i < bm->totloop; i++) {
- temp->lspacearr[i] = BKE_lnor_space_create(temp);
- memcpy(temp->lspacearr[i], bm->lnor_spacearr->lspacearr[i], sizeof(MLoopNorSpace));
- }
int cd_loop_clnors_offset = CustomData_get_offset(&bm->ldata, CD_CUSTOMLOOPNORMAL);
float(*lnors)[3] = MEM_callocN(sizeof(*lnors) * bm->totloop, "__func__");
- BM_loops_calc_normal_vcos(bm, NULL, NULL, NULL, true, M_PI, lnors, bm->lnor_spacearr, NULL, cd_loop_clnors_offset, true);
+ BM_loops_calc_normal_vcos(bm, NULL, NULL, NULL, true, M_PI, lnors, temp, NULL, cd_loop_clnors_offset, true);
for (int i = 0; i < bm->totloop; i++) {
int j = 0;
@@ -1183,7 +1179,6 @@ static void BM_lnorspace_err(BMesh *bm)
BLI_assert(clear);
bm->spacearr_dirty &= ~BM_SPACEARR_DIRTY_ALL;
-
}
/* Marks the individual clnors to be edited, if multiple selection methods are used */
@@ -1433,7 +1428,7 @@ void bmesh_edit_end(BMesh *bm, BMOpTypeFlag type_flag)
/* compute normals, clear temp flags and flush selections */
if (type_flag & BMO_OPTYPE_FLAG_NORMALS_CALC) {
- bm->spacearr_dirty |= (BM_SPACEARR_DIRTY | BM_SPACEARR_BMO_SET);
+ bm->spacearr_dirty |= (BM_SPACEARR_DIRTY_ALL);
BM_mesh_normals_update(bm);
}
diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c
index 286fe401eae..a55df234264 100644
--- a/source/blender/bmesh/intern/bmesh_opdefines.c
+++ b/source/blender/bmesh/intern/bmesh_opdefines.c
@@ -370,8 +370,7 @@ static BMOpDefine bmo_automerge_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -391,8 +390,7 @@ static BMOpDefine bmo_collapse_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -485,8 +483,7 @@ static BMOpDefine bmo_weld_verts_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -536,8 +533,7 @@ static BMOpDefine bmo_join_triangles_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -568,8 +564,7 @@ static BMOpDefine bmo_contextual_create_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -594,8 +589,7 @@ static BMOpDefine bmo_bridge_loops_def = {
bmo_bridge_loops_exec,
(BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -620,8 +614,7 @@ static BMOpDefine bmo_grid_fill_def = {
},
bmo_grid_fill_exec,
(BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_FLUSH),
};
@@ -644,8 +637,7 @@ static BMOpDefine bmo_holes_fill_def = {
},
bmo_holes_fill_exec,
(BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_FLUSH),
};
@@ -668,8 +660,7 @@ static BMOpDefine bmo_face_attribute_fill_def = {
{{'\0'}},
},
bmo_face_attribute_fill_exec,
- (BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ (BMO_OPTYPE_FLAG_NORMALS_CALC),
};
/*
@@ -693,8 +684,7 @@ static BMOpDefine bmo_edgeloop_fill_def = {
},
bmo_edgeloop_fill_exec,
(BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_FLUSH),
};
@@ -719,8 +709,7 @@ static BMOpDefine bmo_edgenet_fill_def = {
},
bmo_edgenet_fill_exec,
(BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_FLUSH),
};
/*
@@ -763,8 +752,7 @@ static BMOpDefine bmo_rotate_def = {
},
{{{'\0'}}}, /* no output */
bmo_rotate_exec,
- (BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ (BMO_OPTYPE_FLAG_NORMALS_CALC),
};
/*
@@ -782,8 +770,7 @@ static BMOpDefine bmo_translate_def = {
},
{{{'\0'}}}, /* no output */
bmo_translate_exec,
- (BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ (BMO_OPTYPE_FLAG_NORMALS_CALC),
};
/*
@@ -801,8 +788,7 @@ static BMOpDefine bmo_scale_def = {
},
{{{'\0'}}}, /* no output */
bmo_scale_exec,
- (BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ (BMO_OPTYPE_FLAG_NORMALS_CALC),
};
@@ -822,8 +808,7 @@ static BMOpDefine bmo_transform_def = {
},
{{{'\0'}}}, /* no output */
bmo_transform_exec,
- (BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ (BMO_OPTYPE_FLAG_NORMALS_CALC),
};
/*
@@ -905,8 +890,7 @@ static BMOpDefine bmo_extrude_discrete_faces_def = {
{{'\0'}},
},
bmo_extrude_discrete_faces_exec,
- (BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ (BMO_OPTYPE_FLAG_NORMALS_CALC),
};
/*
@@ -927,8 +911,7 @@ static BMOpDefine bmo_extrude_edge_only_def = {
{{'\0'}},
},
bmo_extrude_edge_only_exec,
- (BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ (BMO_OPTYPE_FLAG_NORMALS_CALC),
};
/*
@@ -949,8 +932,7 @@ static BMOpDefine bmo_extrude_vert_indiv_def = {
{{'\0'}},
},
bmo_extrude_vert_indiv_exec,
- (BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ (BMO_OPTYPE_FLAG_SELECT_FLUSH),
};
/*
@@ -973,8 +955,7 @@ static BMOpDefine bmo_connect_verts_def = {
bmo_connect_verts_exec,
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_FLUSH),
};
/*
@@ -1042,8 +1023,7 @@ static BMOpDefine bmo_connect_vert_pair_def = {
bmo_connect_vert_pair_exec,
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_FLUSH),
};
@@ -1066,8 +1046,7 @@ static BMOpDefine bmo_extrude_face_region_def = {
{{'\0'}},
},
bmo_extrude_face_region_exec,
- (BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ (BMO_OPTYPE_FLAG_NORMALS_CALC),
};
/*
@@ -1086,8 +1065,7 @@ static BMOpDefine bmo_dissolve_verts_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -1109,8 +1087,7 @@ static BMOpDefine bmo_dissolve_edges_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -1131,8 +1108,7 @@ static BMOpDefine bmo_dissolve_faces_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -1157,8 +1133,7 @@ static BMOpDefine bmo_dissolve_limit_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -1179,8 +1154,7 @@ static BMOpDefine bmo_dissolve_degenerate_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -1204,8 +1178,7 @@ static BMOpDefine bmo_triangulate_def = {
bmo_triangulate_exec,
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
- BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_FLUSH),
};
/*
@@ -1225,8 +1198,7 @@ static BMOpDefine bmo_unsubdivide_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -1267,8 +1239,7 @@ static BMOpDefine bmo_subdivide_edges_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -1293,8 +1264,7 @@ static BMOpDefine bmo_subdivide_edgering_def = {
(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
BMO_OPTYPE_FLAG_NORMALS_CALC |
BMO_OPTYPE_FLAG_SELECT_FLUSH |
- BMO_OPTYPE_FLAG_SELECT_VALIDATE |
- BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+ BMO_OPTYPE_FLAG_SELECT_VALIDATE),
};
/*
@@ -1340,8 +1310,7 @@ stati
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list