Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2009-09-03 09:52:05 +0400
committerJoseph Eagar <joeedh@gmail.com>2009-09-03 09:52:05 +0400
commit9bb0b42b9bcd0bdf71104a326777bafde50dacc9 (patch)
tree087feea399ba2d6b01f402870d8cdab80e475166 /source/blender
parentc753b259dbe89f786e031a3a600193cb6185577d (diff)
made editmesh<->bmesh conversion work again, hopefully (bleh). also made BLI_edgehash use mempools for allocating the bucket entries, for speed.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenlib/intern/edgehash.c13
-rw-r--r--source/blender/bmesh/intern/bmesh_to_editmesh.c2
2 files changed, 10 insertions, 5 deletions
diff --git a/source/blender/blenlib/intern/edgehash.c b/source/blender/blenlib/intern/edgehash.c
index 8976059d153..3624c6c20d4 100644
--- a/source/blender/blenlib/intern/edgehash.c
+++ b/source/blender/blenlib/intern/edgehash.c
@@ -33,6 +33,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_edgehash.h"
+#include "BLI_mempool.h"
/***/
@@ -56,6 +57,7 @@ struct Entry {
struct EdgeHash {
Entry **buckets;
+ BLI_mempool *epool;
int nbuckets, nentries, cursize;
};
@@ -68,13 +70,14 @@ EdgeHash *BLI_edgehash_new(void) {
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 @@ void BLI_edgehash_clear(EdgeHash *eh, EdgeHashFreeFP valfreefp) {
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_clear(EdgeHash *eh, EdgeHashFreeFP valfreefp) {
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);
}
diff --git a/source/blender/bmesh/intern/bmesh_to_editmesh.c b/source/blender/bmesh/intern/bmesh_to_editmesh.c
index a082184affc..5a95025d95a 100644
--- a/source/blender/bmesh/intern/bmesh_to_editmesh.c
+++ b/source/blender/bmesh/intern/bmesh_to_editmesh.c
@@ -265,7 +265,7 @@ void bmesh_make_fgons_exec(BMesh *bmesh, BMOperator *op)
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);