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;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to