[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52382] trunk/blender/source/blender: fix for changes in own recent commit:

Campbell Barton ideasman42 at gmail.com
Tue Nov 20 00:52:25 CET 2012


Revision: 52382
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52382
Author:   campbellbarton
Date:     2012-11-19 23:52:24 +0000 (Mon, 19 Nov 2012)
Log Message:
-----------
fix for changes in own recent commit:
selected linked in face mode was crashing. (needs bmesh operator flags)

also some style edits, remove unused includes and change triangulate modifiers use_beauty to a flag.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h
    trunk/blender/source/blender/editors/mesh/editmesh_select.c
    trunk/blender/source/blender/makesdna/DNA_modifier_types.h
    trunk/blender/source/blender/makesrna/intern/rna_modifier.c
    trunk/blender/source/blender/modifiers/intern/MOD_triangulate.c

Modified: trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2012-11-19 23:52:24 UTC (rev 52382)
@@ -2560,7 +2560,7 @@
 		BLI_edgehashIterator_getKey(ehi, &med->v1, &med->v2);
 		j = GET_INT_FROM_POINTER(BLI_edgehashIterator_getValue(ehi));
 
-		if(j == 0) {
+		if (j == 0) {
 			med->flag = ME_EDGEDRAW | ME_EDGERENDER;
 			*index = ORIGINDEX_NONE;
 		}

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c	2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c	2012-11-19 23:52:24 UTC (rev 52382)
@@ -92,6 +92,14 @@
 	}
 }
 
+void BM_mesh_elem_toolflags_clear(BMesh *bm)
+{
+	if (bm->toolflagpool) {
+		BLI_mempool_destroy(bm->toolflagpool);
+		bm->toolflagpool = NULL;
+	}
+}
+
 /**
  * \brief BMesh Make Mesh
  *
@@ -171,9 +179,7 @@
 	BLI_mempool_destroy(bm->fpool);
 
 	/* destroy flag pool */
-	if (bm->toolflagpool) {
-		BLI_mempool_destroy(bm->toolflagpool);
-	}
+	BM_mesh_elem_toolflags_clear(bm);
 
 #ifdef USE_BMESH_HOLES
 	BLI_mempool_destroy(bm->looplistpool);

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h	2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h	2012-11-19 23:52:24 UTC (rev 52382)
@@ -30,6 +30,7 @@
 struct BMAllocTemplate;
 
 void   BM_mesh_elem_toolflags_ensure(BMesh *bm);
+void   BM_mesh_elem_toolflags_clear(BMesh *bm);
 BMesh *BM_mesh_create(struct BMAllocTemplate *allocsize);
 
 void   BM_mesh_free(BMesh *bm);

Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c	2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c	2012-11-19 23:52:24 UTC (rev 52382)
@@ -2330,6 +2330,8 @@
 		}
 
 		if (limit) {
+			/* grr, shouldn't need to alloca BMO flags here */
+			BM_mesh_elem_toolflags_ensure(bm);
 			BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
 				/* BMESH_TODO, don't use 'BM_ELEM_SELECT' here, its a HFLAG only! */
 				BMO_elem_flag_set(bm, e, BM_ELEM_SELECT, !BM_elem_flag_test(e, BM_ELEM_SEAM));
@@ -2350,6 +2352,10 @@
 			}
 		}
 		BMW_end(&walker);
+
+		if (limit) {
+			BM_mesh_elem_toolflags_clear(bm);
+		}
 	}
 	else {
 		BM_ITER_MESH (v, &iter, em->bm, BM_VERTS_OF_MESH) {

Modified: trunk/blender/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2012-11-19 23:52:24 UTC (rev 52382)
@@ -1119,10 +1119,14 @@
 
 typedef struct TriangulateModifierData {
 	ModifierData modifier;
-	int beauty;
+	int flag;
 	int pad;
 } TriangulateModifierData;
 
+enum {
+	MOD_TRIANGULATE_BEAUTY = (1 << 0),
+};
+
 /* Smooth modifier flags */
 #define MOD_LAPLACIANSMOOTH_X (1<<1)
 #define MOD_LAPLACIANSMOOTH_Y (1<<2)

Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-11-19 23:52:24 UTC (rev 52382)
@@ -3375,10 +3375,9 @@
 	RNA_def_struct_ui_icon(srna, ICON_MOD_TRIANGULATE);
 
 	prop = RNA_def_property(srna, "use_beauty", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_sdna(prop, NULL, "beauty", 1);
+	RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_TRIANGULATE_BEAUTY);
 	RNA_def_property_ui_text(prop, "Beauty Subdivide", "Subdivide across shortest diagonal");
 	RNA_def_property_update(prop, 0, "rna_Modifier_update");
-
 }
 
 void RNA_def_modifier(BlenderRNA *brna)

Modified: trunk/blender/source/blender/modifiers/intern/MOD_triangulate.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_triangulate.c	2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/modifiers/intern/MOD_triangulate.c	2012-11-19 23:52:24 UTC (rev 52382)
@@ -24,47 +24,40 @@
 /** \file blender/modifiers/intern/MOD_triangulate.c
  *  \ingroup modifiers
  */
-#include <string.h>
 
-#include "MEM_guardedalloc.h"
-
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
 #include "DNA_object_types.h"
-#include "DNA_modifier_types.h"
 
 #include "BLI_utildefines.h"
-#include "BLI_string.h"
-#include "BLI_array.h"
 
 #include "BKE_cdderivedmesh.h"
-#include "BKE_deform.h"
-#include "BKE_DerivedMesh.h"
-#include "BKE_mesh.h"
 #include "BKE_modifier.h"
 #include "BKE_tessmesh.h"
 
-#include "MOD_util.h"
-
 /* triangulation modifier, directly calls the bmesh operator */
 
-static DerivedMesh *triangulate(DerivedMesh *dm, char use_beauty)
+static DerivedMesh *triangulate_dm(DerivedMesh *dm, const int flag)
 {
 	DerivedMesh *result;
 	BMesh *bm;
 
 	bm = DM_to_bmesh(dm);
+
 	BM_mesh_elem_toolflags_ensure(bm);
 	BMO_push(bm, NULL);
-	BMO_op_callf(bm, BMO_FLAG_DEFAULTS,
-				  "triangulate faces=%af use_beauty=%b", use_beauty);
 
+	BMO_op_callf(bm, BMO_FLAG_DEFAULTS,
+	             "triangulate faces=%af use_beauty=%b",
+	             (flag & MOD_TRIANGULATE_BEAUTY));
 	BMO_pop(bm);
 
 	result = CDDM_from_bmesh(bm, FALSE);
 	BM_mesh_free(bm);
 
+	/* we don't really need to calc edges,
+	 * this is called to update the origindex values
+	 * This could be made into a different function? - Campbell */
 	CDDM_calc_edges(result);
+
 	CDDM_calc_normals(result);
 
 	return result;
@@ -77,7 +70,7 @@
 
 	/* Enable in editmode by default */
 	md->mode |= eModifierMode_Editmode;
-	tmd->beauty = TRUE;
+	tmd->flag = MOD_TRIANGULATE_BEAUTY;
 }
 
 
@@ -96,7 +89,7 @@
 {
 	TriangulateModifierData *tmd = (TriangulateModifierData *)md;
 	DerivedMesh *result;
-	if (!(result = triangulate(dm, tmd->beauty))) {
+	if (!(result = triangulate_dm(dm, tmd->flag))) {
 		return dm;
 	}
 
@@ -110,7 +103,7 @@
 {
 	TriangulateModifierData *tmd = (TriangulateModifierData *)md;
 	DerivedMesh *result;
-	if(!(result = triangulate(dm, tmd->beauty))) {
+	if (!(result = triangulate_dm(dm, tmd->flag))) {
 		return dm;
 	}
 
@@ -123,10 +116,10 @@
 	/* structSize */        sizeof(TriangulateModifierData),
 	/* type */              eModifierTypeType_Constructive,
 	/* flags */             eModifierTypeFlag_AcceptsMesh |
-							eModifierTypeFlag_SupportsEditmode |
-							eModifierTypeFlag_SupportsMapping |
-							eModifierTypeFlag_EnableInEditmode |
-							eModifierTypeFlag_AcceptsCVs,
+	                        eModifierTypeFlag_SupportsEditmode |
+	                        eModifierTypeFlag_SupportsMapping |
+	                        eModifierTypeFlag_EnableInEditmode |
+	                        eModifierTypeFlag_AcceptsCVs,
 
 	/* copyData */          copyData,
 	/* deformVerts */       NULL,




More information about the Bf-blender-cvs mailing list