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;
 }

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

Reply via email to