Revision: 19553 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19553 Author: aligorith Date: 2009-04-06 02:22:58 +0200 (Mon, 06 Apr 2009)
Log Message: ----------- 2.4x Bugfix #18279 - Copy Vertex Group Location doesn't work with subsurf modifier Modified Paths: -------------- trunk/blender/source/blender/blenkernel/intern/constraint.c Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c =================================================================== --- trunk/blender/source/blender/blenkernel/intern/constraint.c 2009-04-06 00:10:52 UTC (rev 19552) +++ trunk/blender/source/blender/blenkernel/intern/constraint.c 2009-04-06 00:22:58 UTC (rev 19553) @@ -540,6 +540,7 @@ float normal[3] = {0.0f, 0.0f, 0.0f}, plane[3]; float imat[3][3], tmat[3][3]; int dgroup; + short freeDM = 0; /* initialize target matrix using target matrix */ Mat4CpyMat4(mat, ob->obmat); @@ -552,10 +553,19 @@ if ((G.obedit == ob) && (G.editMesh)) { /* target is in editmode, so get a special derived mesh */ dm = CDDM_from_editmesh(G.editMesh, ob->data); + freeDM= 1; } else { - /* when not in EditMode, this should exist */ - dm = (DerivedMesh *)ob->derivedFinal; + /* when not in EditMode, use the 'final' derived mesh + * - check if the custom data masks for derivedFinal mean that we can just use that + * (this is more effficient + sufficient for most cases) + */ + if (ob->lastDataMask != CD_MASK_DERIVEDMESH) { + dm = mesh_get_derived_final(ob, CD_MASK_DERIVEDMESH); + freeDM= 1; + } + else + dm = (DerivedMesh *)ob->derivedFinal; } /* only continue if there's a valid DerivedMesh */ @@ -620,10 +630,9 @@ } } - /* free temporary DerivedMesh created (in EditMode case) */ - if (G.editMesh) { - if (dm) dm->release(dm); - } + /* free temporary DerivedMesh created */ + if (dm && freeDM) + dm->release(dm); } /* function that sets the given matrix based on given vertex group in lattice */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs