[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30612] branches/bmesh/blender/source/ blender: =bmesh= fkey for dissolve works again, also fixed a crasher

Joseph Eagar joeedh at gmail.com
Thu Jul 22 06:45:20 CEST 2010


Revision: 30612
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30612
Author:   joeedh
Date:     2010-07-22 06:45:18 +0200 (Thu, 22 Jul 2010)

Log Message:
-----------
=bmesh= fkey for dissolve works again, also fixed a crasher

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
    branches/bmesh/blender/source/blender/bmesh/operators/createops.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c

Modified: branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c	2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c	2010-07-22 04:45:18 UTC (rev 30612)
@@ -243,7 +243,7 @@
 {
 	void *ret = NULL;
 	
-	if (!iter->curchunk) return NULL;
+	if (!iter->curchunk || !iter->pool->totused) return NULL;
 	
 	ret = ((char*)iter->curchunk->data) + iter->pool->esize*iter->curindex;
 	

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c	2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c	2010-07-22 04:45:18 UTC (rev 30612)
@@ -340,7 +340,7 @@
 	/*create the face, if necassary*/
 	if (!f && !overlap)
 		f = BM_Make_Face(bm, verts, edges2, len);
-	else if (!overlap) 
+	else if (!overlap)
 		f = NULL;
 
 	/*clean up flags*/

Modified: branches/bmesh/blender/source/blender/bmesh/operators/createops.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/createops.c	2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/bmesh/operators/createops.c	2010-07-22 04:45:18 UTC (rev 30612)
@@ -15,6 +15,7 @@
 
 #define ELE_NEW		1
 #define ELE_OUT		2
+#define ELE_ORIG	4
 
 typedef struct EPathNode {
 	struct EPathNode *next, *prev;
@@ -211,6 +212,10 @@
 
 	edata = MEM_callocN(sizeof(EdgeData)*bm->totedge, "EdgeData");
 	BMO_Flag_Buffer(bm, op, "edges", EDGE_MARK, BM_EDGE);
+	
+	BM_ITER(f, &iter, bm, BM_FACES_OF_MESH, NULL) {
+		BMO_SetFlag(bm, f, ELE_ORIG);
+	}
 
 	i = 0;
 	BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) {
@@ -263,7 +268,7 @@
 		edges[i++] = edge;
 
 		f = BM_Make_Ngon(bm, edge->v1, edge->v2, edges, i, 1);
-		if (f)
+		if (f && !BMO_TestFlag(bm, f, ELE_ORIG))
 			BMO_SetFlag(bm, f, FACE_NEW);
 
 		edge_free_path(pathbase, path);

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c	2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c	2010-07-22 04:45:18 UTC (rev 30612)
@@ -573,9 +573,8 @@
 }
 
 /* generic extern called extruder */
-int EDBM_Extrude_Mesh(Object *obedit, BMEditMesh *em, wmOperator *op, float *norin)
+int EDBM_Extrude_Mesh(Scene *scene, Object *obedit, BMEditMesh *em, wmOperator *op, float *norin)
 {
-	Scene *scene= NULL;		// XXX CTX!
 	short nr, transmode= 0;
 	float stacknor[3] = {0.0f, 0.0f, 0.0f};
 	float *nor = norin ? norin : stacknor;
@@ -658,10 +657,11 @@
 /* extrude without transform */
 static int mesh_extrude_region_exec(bContext *C, wmOperator *op)
 {
+	Scene *scene = CTX_data_scene(C);
 	Object *obedit= CTX_data_edit_object(C);
 	BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
 	
-	EDBM_Extrude_Mesh(obedit, em, op, NULL);
+	EDBM_Extrude_Mesh(scene, obedit, em, op, NULL);
 	
 	WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit);
 	
@@ -2362,8 +2362,8 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 
 	/* properties */
-	prop= RNA_def_enum(ot->srna, "type", merge_type_items, 3, "Type", "Merge method to use.");
-	RNA_def_enum_funcs(prop, merge_type_itemf);
+	ot->prop= RNA_def_enum(ot->srna, "type", merge_type_items, 3, "Type", "Merge method to use.");
+	RNA_def_enum_funcs(ot->prop, merge_type_itemf);
 	RNA_def_boolean(ot->srna, "uvs", 1, "UVs", "Move UVs according to merge.");
 }
 





More information about the Bf-blender-cvs mailing list