[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42660] trunk/blender/source/blender/ editors/mesh/meshtools.c: fix [#29620] Topology Mirror: not refreshing vertex UUIDs

Campbell Barton ideasman42 at gmail.com
Fri Dec 16 05:01:17 CET 2011


Revision: 42660
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42660
Author:   campbellbarton
Date:     2011-12-16 04:01:08 +0000 (Fri, 16 Dec 2011)
Log Message:
-----------
fix [#29620] Topology Mirror: not refreshing vertex UUIDs

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/meshtools.c

Modified: trunk/blender/source/blender/editors/mesh/meshtools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/meshtools.c	2011-12-16 03:45:44 UTC (rev 42659)
+++ trunk/blender/source/blender/editors/mesh/meshtools.c	2011-12-16 04:01:08 UTC (rev 42660)
@@ -873,7 +873,8 @@
 }
 
 static long *mesh_topo_lookup = NULL;
-static int  mesh_topo_lookup_tot = -1;
+static int  mesh_topo_lookup_vert_tot = -1;
+static int  mesh_topo_lookup_edge_tot = -1;
 static int  mesh_topo_lookup_mode = -1;
 
 /* mode is 's' start, or 'e' end, or 'u' use */
@@ -884,8 +885,10 @@
 		Mesh *me= ob->data;
 		if(	(mesh_topo_lookup==NULL) ||
 			(mesh_topo_lookup_mode != ob->mode) ||
-			(me->edit_mesh && me->edit_mesh->totvert != mesh_topo_lookup_tot) ||
-			(me->edit_mesh==NULL && me->totvert != mesh_topo_lookup_tot)
+			(me->edit_mesh && (me->edit_mesh->totvert != mesh_topo_lookup_vert_tot)) ||
+			(me->edit_mesh && (me->edit_mesh->totedge != mesh_topo_lookup_edge_tot)) ||
+			(me->edit_mesh==NULL && me->totvert != mesh_topo_lookup_vert_tot) ||
+			(me->edit_mesh==NULL && me->totedge != mesh_topo_lookup_edge_tot)
 		) {
 			mesh_mirrtopo_table(ob, 's');
 		}
@@ -899,7 +902,8 @@
 		/* editmode*/
 		EditEdge *eed;
 
-		int a, last, totvert;
+		int a, last;
+		int totvert, totedge;
 		int totUnique= -1, totUniqueOld= -1;
 
 		MIRRHASH_TYPE *MirrTopoHash = NULL;
@@ -930,12 +934,16 @@
 
 		/* Initialize the vert-edge-user counts used to detect unique topology */
 		if(em) {
-			for(eed=em->edges.first; eed; eed= eed->next) {
+			totedge= 0;
+
+			for(eed=em->edges.first; eed; eed= eed->next, totedge++) {
 				MirrTopoHash[eed->v1->tmp.l]++;
 				MirrTopoHash[eed->v2->tmp.l]++;
 			}
 		} else {
-			for(a=0, medge=me->medge; a<me->totedge; a++, medge++) {
+			totedge= me->totedge;
+
+			for(a=0, medge=me->medge; a < me->totedge; a++, medge++) {
 				MirrTopoHash[medge->v1]++;
 				MirrTopoHash[medge->v2]++;
 			}
@@ -1046,14 +1054,16 @@
 		MEM_freeN( MirrTopoHash );
 		MEM_freeN( MirrTopoHash_Prev );
 
-		mesh_topo_lookup_tot = totvert;
+		mesh_topo_lookup_vert_tot = totvert;
+		mesh_topo_lookup_edge_tot = totedge;
 
 	} else if(mode=='e') { /* end table */
 		if (mesh_topo_lookup) {
 			MEM_freeN(mesh_topo_lookup);
 		}
 		mesh_topo_lookup = NULL;
-		mesh_topo_lookup_tot= -1;
+		mesh_topo_lookup_vert_tot= -1;
+		mesh_topo_lookup_edge_tot= -1;
 	}
 	return 0;
 }




More information about the Bf-blender-cvs mailing list