[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