[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