[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44510] trunk/blender/source/blender/ blenkernel/intern/DerivedMesh.c: fix for issue reported in bug [#30381], though it doesn't deal with the crash.
Campbell Barton
ideasman42 at gmail.com
Tue Feb 28 11:22:28 CET 2012
Revision: 44510
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44510
Author: campbellbarton
Date: 2012-02-28 10:22:21 +0000 (Tue, 28 Feb 2012)
Log Message:
-----------
fix for issue reported in bug [#30381], though it doesn't deal with the crash.
calling DM_ensure_tessface() on an DM_TYPE_EDITBMESH does nothing, which is OK but was printing a warning.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2012-02-28 10:05:03 UTC (rev 44509)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2012-02-28 10:22:21 UTC (rev 44510)
@@ -1900,23 +1900,37 @@
CDDM_apply_vert_coords(*final_r, deformedVerts);
CDDM_calc_normals(*final_r); /* was CDDM_calc_normals_mapping - campbell */
- } else if (dm) {
+ }
+ else if (dm) {
*final_r = dm;
(*final_r)->calcNormals(*final_r); /* BMESH_ONLY - BMESH_TODO. check if this is needed */
- } else if (!deformedVerts && cage_r && *cage_r) {
+ }
+ else if (!deformedVerts && cage_r && *cage_r) {
+ /* cage should already have up to date normals */
*final_r = *cage_r;
(*final_r)->calcNormals(*final_r); /* BMESH_ONLY - BMESH_TODO. check if this is needed */
- } else {
+ }
+ else {
+ /* this is just a copy of the editmesh, no need to calc normals */
*final_r = getEditDerivedBMesh(em, ob, deformedVerts);
deformedVerts = NULL;
- (*final_r)->calcNormals(*final_r); /* BMESH_ONLY - BMESH_TODO. check if this is needed */
}
/* --- */
/* BMESH_ONLY, ensure tessface's used for drawing,
- * but dont recalculate if the last modifier in the stack gives us tessfaces */
- DM_ensure_tessface(*final_r);
- if (cage_r && (*cage_r != *final_r)) DM_ensure_tessface(*cage_r);
+ * but dont recalculate if the last modifier in the stack gives us tessfaces
+ * check if the derived meshes are DM_TYPE_EDITBMESH before calling, this isnt essential
+ * but quiets annoying error messages since tessfaces wont be created. */
+ if ((*final_r)->type != DM_TYPE_EDITBMESH) {
+ DM_ensure_tessface(*final_r);
+ }
+ if (cage_r) {
+ if ((*cage_r)->type != DM_TYPE_EDITBMESH) {
+ if (*cage_r != *final_r) {
+ DM_ensure_tessface(*cage_r);
+ }
+ }
+ }
/* --- */
/* add an orco layer if needed */
More information about the Bf-blender-cvs
mailing list