[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22964] branches/bmesh/blender/source/ blender: made editmesh<->bmesh conversion work again, hopefully (bleh).

Joseph Eagar joeedh at gmail.com
Thu Sep 3 07:52:05 CEST 2009


Revision: 22964
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22964
Author:   joeedh
Date:     2009-09-03 07:52:05 +0200 (Thu, 03 Sep 2009)

Log Message:
-----------
made editmesh<->bmesh conversion work again, hopefully (bleh).  also made BLI_edgehash use mempools for allocating the bucket entries, for speed.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenlib/intern/edgehash.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c

Modified: branches/bmesh/blender/source/blender/blenlib/intern/edgehash.c
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/intern/edgehash.c	2009-09-03 05:12:34 UTC (rev 22963)
+++ branches/bmesh/blender/source/blender/blenlib/intern/edgehash.c	2009-09-03 05:52:05 UTC (rev 22964)
@@ -33,6 +33,7 @@
 
 #include "MEM_guardedalloc.h"
 #include "BLI_edgehash.h"
+#include "BLI_mempool.h"
 
 /***/
 
@@ -56,6 +57,7 @@
 
 struct EdgeHash {
 	Entry **buckets;
+	BLI_mempool *epool;
 	int nbuckets, nentries, cursize;
 };
 
@@ -68,13 +70,14 @@
 	eh->nbuckets= hashsizes[eh->cursize];
 	
 	eh->buckets= MEM_callocN(eh->nbuckets*sizeof(*eh->buckets), "eh buckets 2");
-	
+	eh->epool = BLI_mempool_create(sizeof(Entry), 512, 512);
+
 	return eh;
 }
 
 void BLI_edgehash_insert(EdgeHash *eh, int v0, int v1, void *val) {
 	unsigned int hash;
-	Entry *e= MEM_callocN(sizeof(*e), "edgehash e");
+	Entry *e= BLI_mempool_alloc(eh->epool);
 
 	if (v1<v0) {
 		v0 ^= v1;
@@ -154,7 +157,7 @@
 			Entry *n= e->next;
 			
 			if (valfreefp) valfreefp(e->val);
-			MEM_freeN(e);
+			BLI_mempool_free(eh->epool, e);
 			
 			e= n;
 		}
@@ -166,7 +169,9 @@
 
 void BLI_edgehash_free(EdgeHash *eh, EdgeHashFreeFP valfreefp) {
 	BLI_edgehash_clear(eh, valfreefp);
-	
+
+	BLI_mempool_destroy(eh->epool);
+
 	MEM_freeN(eh->buckets);
 	MEM_freeN(eh);
 }

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c	2009-09-03 05:12:34 UTC (rev 22963)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c	2009-09-03 05:52:05 UTC (rev 22964)
@@ -265,7 +265,7 @@
 			BMO_SetFlag(bmesh, face, FACE_NGON);
 			if (trifan) {
 				while (face->len > 4) {
-					BM_Split_Face(bmesh, face, 
+					face = BM_Split_Face(bmesh, face, 
 						face->loopbase->v, 
 						((BMLoop*)face->loopbase->head.next->next)->v,
 						&nl, NULL);





More information about the Bf-blender-cvs mailing list