Revision: 40264
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40264
Author:   ender79
Date:     2011-09-16 14:28:23 +0000 (Fri, 16 Sep 2011)
Log Message:
-----------
A couple of trivial perf improvements:
-BMEMSET macro should cache the size of the memory block instead of reading 
each iteration
-Avoid tesselating the backup copy of the mesh used to restore after an error 
(unless there is actually an error)

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
    branches/bmesh/blender/source/blender/blenlib/BLI_utildefines.h
    branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c

Modified: 
branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c  
2011-09-16 14:02:44 UTC (rev 40263)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c  
2011-09-16 14:28:23 UTC (rev 40264)
@@ -109,11 +109,18 @@
        *tm2 = *tm;
        
        tm2->derivedCage = tm2->derivedFinal = NULL;
-       
-       tm2->looptris = NULL;
+
        tm2->bm = BM_Copy_Mesh(tm->bm);
-       BMEdit_RecalcTesselation(tm2);
 
+       /*The tesselation is NOT calculated on the copy here,
+         because currently all the callers of this function use
+         it to make a backup copy of the BMEditMesh to restore
+         it in the case of errors in an operation. For perf
+         reasons, in that case it makes more sense to do the
+         tesselation only when/if that copy ends up getting
+         used.*/
+       tm2->looptris = NULL;
+
        tm2->vert_index = NULL;
        tm2->edge_index = NULL;
        tm2->face_index = NULL;

Modified: branches/bmesh/blender/source/blender/blenlib/BLI_utildefines.h
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/BLI_utildefines.h     
2011-09-16 14:02:44 UTC (rev 40263)
+++ branches/bmesh/blender/source/blender/blenlib/BLI_utildefines.h     
2011-09-16 14:28:23 UTC (rev 40264)
@@ -247,6 +247,6 @@
 #  define BLI_assert(a) (void)0
 #endif
 
-#define BMEMSET(mem, val, size) {unsigned int _i; char *_c = (char*) mem; for 
(_i=0; _i<size; _i++) *_c++ = val;}
+#define BMEMSET(mem, val, size) {unsigned int _i, _size = (size); char *_c = 
(char*) mem; for (_i=0; _i<_size; _i++) *_c++ = val;}
 
 #endif // BLI_UTILDEFINES_H

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c     
2011-09-16 14:02:44 UTC (rev 40263)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c     
2011-09-16 14:28:23 UTC (rev 40264)
@@ -156,6 +156,7 @@
 
                BMEdit_Free(em);
                *em = *emcopy;
+               BMEdit_RecalcTesselation(em);
 
                MEM_freeN(emcopy);
                em->emcopyusers = 0;

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

Reply via email to