[Bf-blender-cvs] [7b7196e] master: Code cleanup: modifier_skin_customdata_ensure was a bad level call

Campbell Barton noreply at git.blender.org
Sun Mar 16 12:21:25 CET 2014


Commit: 7b7196e3adea4cd5a818d0653f85b363418079c3
Author: Campbell Barton
Date:   Sun Mar 16 21:55:30 2014 +1100
https://developer.blender.org/rB7b7196e3adea4cd5a818d0653f85b363418079c3

Code cleanup: modifier_skin_customdata_ensure was a bad level call

===================================================================

M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/BKE_modifier.h
M	source/blender/blenkernel/intern/mesh.c
M	source/blender/blenkernel/intern/object.c
M	source/blender/editors/object/object_modifier.c
M	source/blenderplayer/bad_level_call_stubs/stubs.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 25fd951..9c57b7c 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -90,6 +90,7 @@ struct Mesh *BKE_mesh_add(struct Main *bmain, const char *name);
 struct Mesh *BKE_mesh_copy_ex(struct Main *bmain, struct Mesh *me);
 struct Mesh *BKE_mesh_copy(struct Mesh *me);
 void BKE_mesh_update_customdata_pointers(struct Mesh *me, const bool do_ensure_tess_cd);
+void BKE_mesh_ensure_skin_customdata(struct Mesh *me);
 
 void BKE_mesh_make_local(struct Mesh *me);
 void BKE_mesh_boundbox_calc(struct Mesh *me, float r_loc[3], float r_size[3]);
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 2d47cf3..3b2bafa 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -359,7 +359,6 @@ bool          modifiers_usesArmature(struct Object *ob, struct bArmature *arm);
 bool          modifiers_isCorrectableDeformed(struct Scene *scene, struct Object *ob);
 void          modifier_freeTemporaryData(struct ModifierData *md);
 bool          modifiers_isPreview(struct Object *ob);
-void          modifier_skin_customdata_ensure(struct Object *ob);
 
 typedef struct CDMaskLink {
 	struct CDMaskLink *next;
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 838f93e..b7ebd5c 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -337,6 +337,43 @@ static void mesh_ensure_tessellation_customdata(Mesh *me)
 	}
 }
 
+void BKE_mesh_ensure_skin_customdata(Mesh *me)
+{
+	BMesh *bm = me->edit_btmesh ? me->edit_btmesh->bm : NULL;
+	MVertSkin *vs;
+
+	if (bm) {
+		if (!CustomData_has_layer(&bm->vdata, CD_MVERT_SKIN)) {
+			BMVert *v;
+			BMIter iter;
+
+			BM_data_layer_add(bm, &bm->vdata, CD_MVERT_SKIN);
+
+			/* Mark an arbitrary vertex as root */
+			BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
+				vs = CustomData_bmesh_get(&bm->vdata, v->head.data,
+				                          CD_MVERT_SKIN);
+				vs->flag |= MVERT_SKIN_ROOT;
+				break;
+			}
+		}
+	}
+	else {
+		if (!CustomData_has_layer(&me->vdata, CD_MVERT_SKIN)) {
+			vs = CustomData_add_layer(&me->vdata,
+			                          CD_MVERT_SKIN,
+			                          CD_DEFAULT,
+			                          NULL,
+			                          me->totvert);
+
+			/* Mark an arbitrary vertex as root */
+			if (vs) {
+				vs->flag |= MVERT_SKIN_ROOT;
+			}
+		}
+	}
+}
+
 /* this ensures grouped customdata (e.g. mtexpoly and mloopuv and mtface, or
  * mloopcol and mcol) have the same relative active/render/clone/mask indices.
  *
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 0970af4..de9dd01 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -273,7 +273,7 @@ void BKE_object_link_modifiers(struct Object *ob_dst, struct Object *ob_src)
 		
 		if (md->type == eModifierType_Skin) {
 			/* ensure skin-node customdata exists */
-			modifier_skin_customdata_ensure(ob_dst);
+			BKE_mesh_ensure_skin_customdata(ob_dst->data);
 		}
 
 		nmd = modifier_new(md->type);
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 013a6c7..327e840 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -166,7 +166,7 @@ ModifierData *ED_object_modifier_add(ReportList *reports, Main *bmain, Scene *sc
 		}
 		else if (type == eModifierType_Skin) {
 			/* ensure skin-node customdata exists */
-			modifier_skin_customdata_ensure(ob);
+			BKE_mesh_ensure_skin_customdata(ob->data);
 		}
 	}
 
@@ -1431,39 +1431,6 @@ void OBJECT_OT_multires_base_apply(wmOperatorType *ot)
 
 /************************** skin modifier ***********************/
 
-void modifier_skin_customdata_ensure(Object *ob)
-{
-	Mesh *me = ob->data;
-	BMesh *bm = me->edit_btmesh ? me->edit_btmesh->bm : NULL;
-	MVertSkin *vs;
-
-	if (bm && !CustomData_has_layer(&bm->vdata, CD_MVERT_SKIN)) {
-		BMVert *v;
-		BMIter iter;
-
-		BM_data_layer_add(bm, &bm->vdata, CD_MVERT_SKIN);
-		
-		/* Mark an arbitrary vertex as root */
-		BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
-			vs = CustomData_bmesh_get(&bm->vdata, v->head.data,
-			                          CD_MVERT_SKIN);
-			vs->flag |= MVERT_SKIN_ROOT;
-			break;
-		}
-	}
-	else if (!CustomData_has_layer(&me->vdata, CD_MVERT_SKIN)) {
-		vs = CustomData_add_layer(&me->vdata,
-		                          CD_MVERT_SKIN,
-		                          CD_DEFAULT,
-		                          NULL,
-		                          me->totvert);
-
-		/* Mark an arbitrary vertex as root */
-		if (vs)
-			vs->flag |= MVERT_SKIN_ROOT;
-	}
-}
-
 static void modifier_skin_customdata_delete(Object *ob)
 {
 	Mesh *me = ob->data;
@@ -1520,7 +1487,7 @@ static int skin_root_mark_exec(bContext *C, wmOperator *UNUSED(op))
 
 	visited = BLI_ghash_ptr_new("skin_root_mark_exec visited");
 
-	modifier_skin_customdata_ensure(ob);
+	BKE_mesh_ensure_skin_customdata(ob->data);
 
 	BM_ITER_MESH (bm_vert, &bm_iter, bm, BM_VERTS_OF_MESH) {
 		if (!BLI_ghash_lookup(visited, bm_vert) &&
diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c
index 0550361..806fa59 100644
--- a/source/blenderplayer/bad_level_call_stubs/stubs.c
+++ b/source/blenderplayer/bad_level_call_stubs/stubs.c
@@ -236,9 +236,6 @@ void RE_free_sample_material(struct Material *mat) RET_NONE
 void RE_sample_material_color(struct Material *mat, float color[3], float *alpha, const float volume_co[3], const float surface_co[3],
                               int face_index, short hit_quad, struct DerivedMesh *orcoDm, struct Object *ob) RET_NONE
 
-/* skin modifier*/
-void modifier_skin_customdata_ensure(struct Object *ob) RET_NONE
-
 /* nodes */
 struct Render *RE_GetRender(const char *name) RET_NULL
 float RE_lamp_get_data(struct ShadeInput *shi, struct Object *lamp_obj, float col[4], float lv[3], float *dist, float shadow[4]) RET_ZERO




More information about the Bf-blender-cvs mailing list