[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53902] trunk/blender/source/blender/ blenkernel/intern/cdderivedmesh.c: CDDM_merge_verts() was building an index array for all loops and not using it.

Campbell Barton ideasman42 at gmail.com
Sat Jan 19 03:01:21 CET 2013


Revision: 53902
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53902
Author:   campbellbarton
Date:     2013-01-19 02:01:18 +0000 (Sat, 19 Jan 2013)
Log Message:
-----------
CDDM_merge_verts() was building an index array for all loops and not using it.
also use malloc over calloc since the values are filled in right after.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c

Modified: trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2013-01-19 00:53:33 UTC (rev 53901)
+++ trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2013-01-19 02:01:18 UTC (rev 53902)
@@ -2285,6 +2285,7 @@
  */
 DerivedMesh *CDDM_merge_verts(DerivedMesh *dm, const int *vtargetmap)
 {
+// #define USE_LOOPS
 	CDDerivedMesh *cddm = (CDDerivedMesh *)dm;
 	CDDerivedMesh *cddm2 = NULL;
 	MVert *mv, *mvert = NULL;
@@ -2296,7 +2297,10 @@
 	MLoop *ml, *mloop = NULL;
 	BLI_array_declare(mloop);
 	EdgeHash *ehash = BLI_edgehash_new();
-	int *newv = NULL, *newe = NULL, *newl = NULL;
+	int *newv = NULL, *newe = NULL;
+#ifdef USE_LOOPS
+	int *newl = NULL;
+#endif
 	int *oldv = NULL, *olde = NULL, *oldl = NULL, *oldp = NULL;
 	BLI_array_declare(oldv); BLI_array_declare(olde); BLI_array_declare(oldl); BLI_array_declare(oldp);
 	int i, j, c, totloop, totpoly;
@@ -2304,10 +2308,11 @@
 	totloop = dm->numLoopData;
 	totpoly = dm->numPolyData;
 	
-	newv = MEM_callocN(sizeof(int) * dm->numVertData, "newv vtable CDDM_merge_verts");
-	newe = MEM_callocN(sizeof(int) * dm->numEdgeData, "newv etable CDDM_merge_verts");
-	newl = MEM_callocN(sizeof(int) * totloop, "newv ltable CDDM_merge_verts");
-	
+	newv = MEM_mallocN(sizeof(int) * dm->numVertData, "newv vtable CDDM_merge_verts");
+	newe = MEM_mallocN(sizeof(int) * dm->numEdgeData, "newv etable CDDM_merge_verts");
+#ifdef USE_LOOPS
+	newl = MEM_mallocN(sizeof(int) * totloop, "newv ltable CDDM_merge_verts");
+#endif
 	/* fill newl with destination vertex indices */
 	mv = cddm->mvert;
 	c = 0;
@@ -2317,6 +2322,10 @@
 			newv[i] = c++;
 			BLI_array_append(mvert, *mv);
 		}
+		else {
+			/* dummy value */
+			newv[i] = 0;
+		}
 	}
 	
 	/* now link target vertices to destination indices */
@@ -2385,7 +2394,9 @@
 		for (j = 0; j < mp->totloop; j++, ml++) {
 			med = cddm->medge + ml->e;
 			if (LIKELY(med->v1 != med->v2)) {
+#ifdef USE_LOOPS
 				newl[j + mp->loopstart] = BLI_array_count(mloop);
+#endif
 				BLI_array_append(oldl, j + mp->loopstart);
 				BLI_array_append(mloop, *ml);
 				c++;
@@ -2451,8 +2462,10 @@
 		MEM_freeN(newv); 
 	if (newe)
 		MEM_freeN(newe); 
+#ifdef USE_LOOPS
 	if (newl)
 		MEM_freeN(newl);
+#endif
 	if (oldv) 
 		MEM_freeN(oldv); 
 	if (olde) 




More information about the Bf-blender-cvs mailing list