[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54135] trunk/blender/source/blender/bmesh /intern/bmesh_log.c: minor optimization - don' t do double lookups on vertex mask layer for vert_mask_get(), vert_mask_set ().

Campbell Barton ideasman42 at gmail.com
Mon Jan 28 05:10:54 CET 2013


Revision: 54135
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54135
Author:   campbellbarton
Date:     2013-01-28 04:10:47 +0000 (Mon, 28 Jan 2013)
Log Message:
-----------
minor optimization - don't do double lookups on vertex mask layer for vert_mask_get(), vert_mask_set().

add an assert because if the mesh is in an invalid state the mask layer can exist but the mask pointer still be NULL (noticed this while looking into a different bug).

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_log.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_log.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_log.c	2013-01-28 02:48:19 UTC (rev 54134)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_log.c	2013-01-28 04:10:47 UTC (rev 54135)
@@ -165,13 +165,13 @@
  * Returns zero if no paint-mask layer is present */
 static float vert_mask_get(BMesh *bm, BMVert *v)
 {
-	CustomData *cd = &bm->vdata;
-	if (CustomData_has_layer(&bm->vdata, CD_PAINT_MASK)) {
-		float *mask = CustomData_bmesh_get(cd, v->head.data, CD_PAINT_MASK);
+	float *mask = CustomData_bmesh_get(&bm->vdata, v->head.data, CD_PAINT_MASK);
+	BLI_assert((CustomData_has_layer(&bm->vdata, CD_PAINT_MASK) == 0) == (mask == NULL));
+	if (mask) {
 		return *mask;
 	}
 	else {
-		return 0;
+		return 0.0f;
 	}
 }
 
@@ -180,10 +180,10 @@
  * Has no effect is no paint-mask layer is present */
 static void vert_mask_set(BMesh *bm, BMVert *v, float new_mask)
 {
-	CustomData *cd = &bm->vdata;
-	if (CustomData_has_layer(cd, CD_PAINT_MASK)) {
-		float *mask = CustomData_bmesh_get(cd, v->head.data, CD_PAINT_MASK);
-		(*mask) = new_mask;
+	float *mask = CustomData_bmesh_get(&bm->vdata, v->head.data, CD_PAINT_MASK);
+	BLI_assert((CustomData_has_layer(&bm->vdata, CD_PAINT_MASK) == 0) == (mask == NULL));
+	if (*mask) {
+		*mask = new_mask;
 	}
 }
 




More information about the Bf-blender-cvs mailing list