diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-09-12 14:41:00 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-09-12 14:41:00 +0400 |
commit | c9dfe7bd74a03886d4284985418619ccf5077ac3 (patch) | |
tree | 0cc3f49b5df73eff5c56fc2e220c1294cd25c6b9 /source/blender/blenkernel | |
parent | 7bbb83893539211ba91cae98818b1238cf21bea7 (diff) |
more localized fix for [#36299], only changes behavior for subsurf with orco in editmode
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 6 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/subsurf_ccg.c | 2 |
2 files changed, 3 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 5809e48e6cd..368c1e517ef 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2086,14 +2086,10 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D mask &= ~CD_MASK_ORCO; DM_set_only_copy(orcodm, mask | CD_MASK_ORIGINDEX); - /* disabled: subsurf can't calculate twice on the same editmesh (uses freed cache) [#36299] */ -#if 0 if (mti->applyModifierEM) { ndm = modwrap_applyModifierEM(md, ob, em, orcodm, MOD_APPLY_ORCO); } - else -#endif - { + else { ndm = modwrap_applyModifier(md, ob, orcodm, MOD_APPLY_ORCO); } ASSERT_IS_VALID_DM(ndm); diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index d5761fa918e..2461ec85bb4 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -3573,6 +3573,8 @@ struct DerivedMesh *subsurf_make_derived_from_derived( int drawInteriorEdges = !(smd->flags & eSubsurfModifierFlag_ControlEdges); CCGDerivedMesh *result; + /* note: editmode calculation can only run once per + * modifier stack evaluation (uses freed cache) [#36299] */ if (flags & SUBSURF_FOR_EDIT_MODE) { int levels = (smd->modifier.scene) ? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels) : smd->levels; |