[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45253] trunk/blender/source: skip using bmesh operators for converting to/from undo meshes ( gives some speedup)

Campbell Barton ideasman42 at gmail.com
Thu Mar 29 03:41:57 CEST 2012


Revision: 45253
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45253
Author:   campbellbarton
Date:     2012-03-29 01:41:56 +0000 (Thu, 29 Mar 2012)
Log Message:
-----------
skip using bmesh operators for converting to/from undo meshes (gives some speedup)

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/editors/include/ED_mesh.h
    trunk/blender/source/blender/editors/mesh/editmesh_utils.c
    trunk/blender/source/blender/editors/mesh/mesh_data.c
    trunk/blender/source/blender/editors/mesh/meshtools.c
    trunk/blender/source/blender/editors/object/object_edit.c
    trunk/blender/source/blender/editors/object/object_hook.c
    trunk/blender/source/blender/editors/object/object_relations.c
    trunk/blender/source/blender/makesrna/intern/rna_object.c
    trunk/blender/source/blenderplayer/bad_level_call_stubs/stubs.c

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2012-03-29 01:41:56 UTC (rev 45253)
@@ -556,7 +556,7 @@
 
 	bm = BM_mesh_create(&bm_mesh_allocsize_default);
 
-	BMO_op_callf(bm, "mesh_to_bmesh mesh=%p object=%p set_shapekey=%b", me, ob, TRUE);
+	BM_mesh_bm_from_me(bm, me, TRUE, ob->shapenr);
 
 	return bm;
 }

Modified: trunk/blender/source/blender/editors/include/ED_mesh.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_mesh.h	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blender/editors/include/ED_mesh.h	2012-03-29 01:41:56 UTC (rev 45253)
@@ -110,7 +110,7 @@
 
 void EDBM_mesh_make(struct ToolSettings *ts, struct Scene *scene, struct Object *ob);
 void EDBM_mesh_free(struct BMEditMesh *tm);
-void EDBM_mesh_load(struct Scene *scene, struct Object *ob);
+void EDBM_mesh_load(struct Object *ob);
 
 void           EDBM_index_arrays_init(struct BMEditMesh *em, int forvert, int foredge, int forface);
 void           EDBM_index_arrays_free(struct BMEditMesh *em);

Modified: trunk/blender/source/blender/editors/mesh/editmesh_utils.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_utils.c	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blender/editors/mesh/editmesh_utils.c	2012-03-29 01:41:56 UTC (rev 45253)
@@ -301,12 +301,12 @@
 	me->edit_btmesh->ob = ob;
 }
 
-void EDBM_mesh_load(Scene *scene, Object *ob)
+void EDBM_mesh_load(Object *ob)
 {
 	Mesh *me = ob->data;
 	BMesh *bm = me->edit_btmesh->bm;
 
-	BMO_op_callf(bm, "object_load_bmesh scene=%p object=%p", scene, ob);
+	BM_mesh_bm_to_me(bm, me, FALSE);
 
 #ifdef USE_TESSFACE_DEFAULT
 	BKE_mesh_tessface_calc(me);
@@ -552,8 +552,12 @@
 	BMEdit_Free(em);
 
 	bm = BM_mesh_create(&bm_mesh_allocsize_default);
-	BMO_op_callf(bm, "mesh_to_bmesh mesh=%p object=%p set_shapekey=%b", &um->me, ob, FALSE);
 
+	BM_mesh_bm_from_me(bm, &um->me, FALSE, ob->shapenr);
+
+	/* face normals need recalculation since we are not calling through an operator */
+	BM_mesh_normals_update(bm, TRUE);
+
 	em_tmp = BMEdit_Create(bm, TRUE);
 	*em = *em_tmp;
 	
@@ -563,16 +567,16 @@
 	MEM_freeN(em_tmp);
 }
 
-
-static void free_undo(void *umv)
+static void free_undo(void *me_v)
 {
-	if (((Mesh *)umv)->key) {
-		free_key(((Mesh *)umv)->key);
-		MEM_freeN(((Mesh *)umv)->key);
+	Mesh *me = me_v;
+	if (me->key) {
+		free_key(me->key);
+		MEM_freeN(me->key);
 	}
-	
-	free_mesh(umv, 0);
-	MEM_freeN(umv);
+
+	free_mesh(me, FALSE);
+	MEM_freeN(me);
 }
 
 /* and this is all the undo system needs to know */

Modified: trunk/blender/source/blender/editors/mesh/mesh_data.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_data.c	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blender/editors/mesh/mesh_data.c	2012-03-29 01:41:56 UTC (rev 45253)
@@ -614,7 +614,7 @@
 	ED_uvedit_assign_image(bmain, scene, obedit, ima, NULL);
 
 	if (exitmode) {
-		EDBM_mesh_load(scene, obedit);
+		EDBM_mesh_load(obedit);
 		EDBM_mesh_free(me->edit_btmesh);
 		MEM_freeN(me->edit_btmesh);
 		me->edit_btmesh = NULL;

Modified: trunk/blender/source/blender/editors/mesh/meshtools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/meshtools.c	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blender/editors/mesh/meshtools.c	2012-03-29 01:41:56 UTC (rev 45253)
@@ -543,7 +543,7 @@
 #else
 	/* toggle editmode using lower level functions so this can be called from python */
 	EDBM_mesh_make(scene->toolsettings, scene, ob);
-	EDBM_mesh_load(scene, ob);
+	EDBM_mesh_load(ob);
 	EDBM_mesh_free(me->edit_btmesh);
 	MEM_freeN(me->edit_btmesh);
 	me->edit_btmesh = NULL;

Modified: trunk/blender/source/blender/editors/object/object_edit.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_edit.c	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blender/editors/object/object_edit.c	2012-03-29 01:41:56 UTC (rev 45253)
@@ -327,7 +327,7 @@
 			return;
 		}
 		
-		EDBM_mesh_load(scene, obedit);
+		EDBM_mesh_load(obedit);
 		
 		if (freedata) {
 			EDBM_mesh_free(me->edit_btmesh);

Modified: trunk/blender/source/blender/editors/object/object_hook.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_hook.c	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blender/editors/object/object_hook.c	2012-03-29 01:41:56 UTC (rev 45253)
@@ -308,7 +308,7 @@
 
 			BMEditMesh *em;
 
-			EDBM_mesh_load(scene, obedit);
+			EDBM_mesh_load(obedit);
 			EDBM_mesh_make(scene->toolsettings, scene, obedit);
 
 			em = me->edit_btmesh;

Modified: trunk/blender/source/blender/editors/object/object_relations.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_relations.c	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blender/editors/object/object_relations.c	2012-03-29 01:41:56 UTC (rev 45253)
@@ -128,7 +128,7 @@
 		Mesh *me= obedit->data;
 		BMEditMesh *em;
 
-		EDBM_mesh_load(scene, obedit);
+		EDBM_mesh_load(obedit);
 		EDBM_mesh_make(scene->toolsettings, scene, obedit);
 
 		em= me->edit_btmesh;

Modified: trunk/blender/source/blender/makesrna/intern/rna_object.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_object.c	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blender/makesrna/intern/rna_object.c	2012-03-29 01:41:56 UTC (rev 45253)
@@ -228,7 +228,7 @@
 		/* exit/enter editmode to get new shape */
 		switch (ob->type) {
 			case OB_MESH:
-				EDBM_mesh_load(scene, ob);
+				EDBM_mesh_load(ob);
 				EDBM_mesh_make(scene->toolsettings, scene, ob);
 				BMEdit_RecalcTessellation(((Mesh*)ob->data)->edit_btmesh);
 				break;

Modified: trunk/blender/source/blenderplayer/bad_level_call_stubs/stubs.c
===================================================================
--- trunk/blender/source/blenderplayer/bad_level_call_stubs/stubs.c	2012-03-29 01:40:19 UTC (rev 45252)
+++ trunk/blender/source/blenderplayer/bad_level_call_stubs/stubs.c	2012-03-29 01:41:56 UTC (rev 45253)
@@ -116,7 +116,7 @@
 
 /*new render funcs */
 void EDBM_selectmode_set(struct BMEditMesh *em) {}
-void EDBM_mesh_load(struct Scene *scene, struct Object *ob) {}
+void EDBM_mesh_load(struct Object *ob) {}
 void EDBM_mesh_make(struct ToolSettings *ts, struct Scene *scene, struct Object *ob) {}
 void *g_system;
 




More information about the Bf-blender-cvs mailing list