diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-01-19 04:53:33 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-01-19 04:53:33 +0400 |
commit | f251eb3f0cc7d785d3e9925147575cbd379842d8 (patch) | |
tree | 5864476cd0dd1de278236d88b96ce05cd0e7e2b6 /source/blender/bmesh | |
parent | a8abc11e42fefd8e6192e3a9bcc185b6428d36f4 (diff) |
minor dyntopo speedup: was doing 2x ghash lookups for BM_log_face_removed(), BM_log_vert_removed(), only one needed.
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_log.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/source/blender/bmesh/intern/bmesh_log.c b/source/blender/bmesh/intern/bmesh_log.c index 2ad65bead07..fa5bfe34a11 100644 --- a/source/blender/bmesh/intern/bmesh_log.c +++ b/source/blender/bmesh/intern/bmesh_log.c @@ -806,8 +806,11 @@ void BM_log_vert_removed(BMesh *bm, BMLog *log, BMVert *v) unsigned int v_id = bm_log_vert_id_get(log, v); void *key = SET_INT_IN_POINTER(v_id); - if (BLI_ghash_lookup(entry->added_verts, key)) { - BLI_ghash_remove(entry->added_verts, key, NULL, NULL); + /* if it has a key, it shouldn't be NULL */ + BLI_assert(!!BLI_ghash_lookup(entry->added_verts, key) == + !!BLI_ghash_haskey(entry->added_verts, key)); + + if (BLI_ghash_remove(entry->added_verts, key, NULL, NULL)) { range_tree_uint_release(log->unused_ids, v_id); } else { @@ -844,8 +847,11 @@ void BM_log_face_removed(BMLog *log, BMFace *f) unsigned int f_id = bm_log_face_id_get(log, f); void *key = SET_INT_IN_POINTER(f_id); - if (BLI_ghash_lookup(entry->added_faces, key)) { - BLI_ghash_remove(entry->added_faces, key, NULL, NULL); + /* if it has a key, it shouldn't be NULL */ + BLI_assert(!!BLI_ghash_lookup(entry->added_faces, key) == + !!BLI_ghash_haskey(entry->added_faces, key)); + + if (BLI_ghash_remove(entry->added_faces, key, NULL, NULL)) { range_tree_uint_release(log->unused_ids, f_id); } else { |