[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