[Bf-blender-cvs] [5452df7] master: BMesh: minor optimization for intersect
Campbell Barton
noreply at git.blender.org
Thu Dec 10 13:50:40 CET 2015
Commit: 5452df79846387fa0fd865281bdab048b11c4019
Author: Campbell Barton
Date: Thu Dec 10 23:39:50 2015 +1100
Branches: master
https://developer.blender.org/rB5452df79846387fa0fd865281bdab048b11c4019
BMesh: minor optimization for intersect
Avoid double lookup on insertion ghash
===================================================================
M source/blender/bmesh/tools/bmesh_intersect.c
===================================================================
diff --git a/source/blender/bmesh/tools/bmesh_intersect.c b/source/blender/bmesh/tools/bmesh_intersect.c
index 24f7fe2..0c9cace 100644
--- a/source/blender/bmesh/tools/bmesh_intersect.c
+++ b/source/blender/bmesh/tools/bmesh_intersect.c
@@ -147,22 +147,21 @@ static bool ghash_insert_link(
GHash *gh, void *key, void *val, bool use_test,
MemArena *mem_arena)
{
+ void **ls_base_p;
struct LinkBase *ls_base;
LinkNode *ls;
- ls_base = BLI_ghash_lookup(gh, key);
-
- if (ls_base) {
+ if (!BLI_ghash_ensure_p(gh, key, &ls_base_p)) {
+ ls_base = *ls_base_p = BLI_memarena_alloc(mem_arena, sizeof(*ls_base));
+ ls_base->list = NULL;
+ ls_base->list_len = 0;
+ }
+ else {
+ ls_base = *ls_base_p;
if (use_test && (BLI_linklist_index(ls_base->list, key) != -1)) {
return false;
}
}
- else {
- ls_base = BLI_memarena_alloc(mem_arena, sizeof(*ls_base));
- ls_base->list = NULL;
- ls_base->list_len = 0;
- BLI_ghash_insert(gh, key, ls_base);
- }
ls = BLI_memarena_alloc(mem_arena, sizeof(*ls));
ls->next = ls_base->list;
More information about the Bf-blender-cvs
mailing list