[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59201] trunk/blender/source/blender: avoid double ghash lookups
Campbell Barton
ideasman42 at gmail.com
Sat Aug 17 10:00:23 CEST 2013
Revision: 59201
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59201
Author: campbellbarton
Date: 2013-08-17 08:00:22 +0000 (Sat, 17 Aug 2013)
Log Message:
-----------
avoid double ghash lookups
Modified Paths:
--------------
trunk/blender/source/blender/bmesh/operators/bmo_symmetrize.c
trunk/blender/source/blender/editors/sculpt_paint/sculpt_uv.c
trunk/blender/source/blender/editors/uvedit/uvedit_smart_stitch.c
Modified: trunk/blender/source/blender/bmesh/operators/bmo_symmetrize.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_symmetrize.c 2013-08-17 07:09:07 UTC (rev 59200)
+++ trunk/blender/source/blender/bmesh/operators/bmo_symmetrize.c 2013-08-17 08:00:22 UTC (rev 59201)
@@ -101,7 +101,7 @@
BMOIter oiter;
BMVert *src_v, *dst_v;
- symm->vert_symm_map = BLI_ghash_ptr_new(AT);
+ symm->vert_symm_map = BLI_ghash_ptr_new(__func__);
BMO_ITER (src_v, &oiter, symm->op->slots_in, "input", BM_VERT) {
SymmSide side = symm_co_side(symm, src_v->co);
@@ -214,9 +214,8 @@
BMO_elem_flag_enable(symm->bm, e_new, SYMM_OUTPUT_GEOM);
}
else if (v1 || v2) {
- if (BLI_ghash_haskey(symm->edge_split_map, e)) {
- BMVert *v_split = BLI_ghash_lookup(symm->edge_split_map, e);
-
+ BMVert *v_split = BLI_ghash_lookup(symm->edge_split_map, e);
+ if (v_split) {
/* Output the keep side of the split edge */
if (!v1) {
e_new = BM_edge_create(symm->bm, v_split, e->v2, e, BM_CREATE_NO_DOUBLE);
@@ -330,8 +329,9 @@
if (sp->edge_verts[v])
return sp->edge_verts[v];
else if (sp->src_verts[v]) {
- if (BLI_ghash_haskey(symm->vert_symm_map, sp->src_verts[v]))
- return BLI_ghash_lookup(symm->vert_symm_map, sp->src_verts[v]);
+ BMVert *v_src = BLI_ghash_lookup(symm->vert_symm_map, sp->src_verts[v]);
+ if (v_src)
+ return v_src;
else
return sp->src_verts[v];
}
Modified: trunk/blender/source/blender/editors/sculpt_paint/sculpt_uv.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/sculpt_uv.c 2013-08-17 07:09:07 UTC (rev 59200)
+++ trunk/blender/source/blender/editors/sculpt_paint/sculpt_uv.c 2013-08-17 08:00:22 UTC (rev 59201)
@@ -662,6 +662,7 @@
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
int offset1, itmp1 = uv_element_offset_from_face_get(data->elementMap, efa, l, island_index, do_island_optimization);
int offset2, itmp2 = uv_element_offset_from_face_get(data->elementMap, efa, l->next, island_index, do_island_optimization);
+ char *flag;
/* Skip edge if not found(unlikely) or not on valid island */
if (itmp1 == -1 || itmp2 == -1)
@@ -682,8 +683,8 @@
edges[counter].uv2 = offset1;
}
/* Hack! Set the value of the key to its flag. Now we can set the flag when an edge exists twice :) */
- if (BLI_ghash_haskey(edgeHash, &edges[counter])) {
- char *flag = BLI_ghash_lookup(edgeHash, &edges[counter]);
+ flag = BLI_ghash_lookup(edgeHash, &edges[counter]);
+ if (flag) {
*flag = 1;
}
else {
Modified: trunk/blender/source/blender/editors/uvedit/uvedit_smart_stitch.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_smart_stitch.c 2013-08-17 07:09:07 UTC (rev 59200)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_smart_stitch.c 2013-08-17 08:00:22 UTC (rev 59201)
@@ -1718,6 +1718,7 @@
UvElement *element = ED_uv_element_get(state->element_map, efa, l);
int offset1, itmp1 = element - state->element_map->buf;
int offset2, itmp2 = ED_uv_element_get(state->element_map, efa, l->next) - state->element_map->buf;
+ UvEdge *edge;
offset1 = map[itmp1];
offset2 = map[itmp2];
@@ -1737,8 +1738,8 @@
all_edges[counter].uv2 = offset1;
}
- if (BLI_ghash_haskey(edge_hash, &all_edges[counter])) {
- UvEdge *edge = BLI_ghash_lookup(edge_hash, &all_edges[counter]);
+ edge = BLI_ghash_lookup(edge_hash, &all_edges[counter]);
+ if (edge) {
edge->flag = 0;
}
else {
More information about the Bf-blender-cvs
mailing list