[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27171] trunk/blender/source/blender/ blenkernel/intern: Patch #21267 by Sergey Sharybin

Ton Roosendaal ton at blender.org
Sat Feb 27 17:06:33 CET 2010


Revision: 27171
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27171
Author:   ton
Date:     2010-02-27 17:06:33 +0100 (Sat, 27 Feb 2010)

Log Message:
-----------
Patch #21267 by  Sergey Sharybin 

His log:
There is a small typo in copy_curve(): there will be serious troubles 
if this functions is called for OB_FONT in edit mode (for my cases 
it is segmentation fault).
I think we should set editfont to NULL for cloned curves (as it is made 
for edit nurb).

This bug was found by trying to edit text with applied Cast modifier 
and while I was searching what's wrong, I've found that in 
castModifier_deformVerts() DerivedMesh is creating for all objects, 
but in castModifier_*_do() derived mesh is used only for OB_MESH 
objects. Maybe this place could be optimized a bit by skipping DM 
creation for non-meshes?

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

Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c	2010-02-27 15:39:13 UTC (rev 27170)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c	2010-02-27 16:06:33 UTC (rev 27171)
@@ -191,6 +191,7 @@
 	cun->path= 0;
 
 	cun->editnurb= NULL;
+	cun->editfont= NULL;
 
 #if 0	// XXX old animation system
 	/* single user ipo too */

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2010-02-27 15:39:13 UTC (rev 27170)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2010-02-27 16:06:33 UTC (rev 27171)
@@ -4825,9 +4825,15 @@
 				     ModifierData *md, Object *ob, DerivedMesh *derivedData,
 	 float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
-	DerivedMesh *dm = get_dm(md->scene, ob, NULL, derivedData, NULL, 0);
+	DerivedMesh *dm = NULL;
 	CastModifierData *cmd = (CastModifierData *)md;
 
+	if (ob->type == OB_MESH) {
+		/* DerivedMesh is used only in case object is MESH */
+		/* so we could optimize modifier applying by skipping DM creation */
+		dm = get_dm(md->scene, ob, NULL, derivedData, NULL, 0);
+	}
+
 	if (cmd->type == MOD_CAST_TYPE_CUBOID) {
 		castModifier_cuboid_do(cmd, ob, dm, vertexCos, numVerts);
 	} else { /* MOD_CAST_TYPE_SPHERE or MOD_CAST_TYPE_CYLINDER */





More information about the Bf-blender-cvs mailing list