diff options
Diffstat (limited to 'source/blender/blenkernel/intern/DerivedMesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 38 |
1 files changed, 4 insertions, 34 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 3dda6933eab..02de0ce1d40 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2163,38 +2163,6 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D MEM_freeN(deformedVerts); } -static void clear_mesh_caches(Object *ob) -{ - Mesh *me = ob->data; - - /* also serves as signal to remake texspace */ - if (ob->bb) { - MEM_freeN(ob->bb); - ob->bb = NULL; - } - if (me->bb) { - MEM_freeN(me->bb); - me->bb = NULL; - } - - BKE_displist_free(&ob->disp); - - if (ob->derivedFinal) { - ob->derivedFinal->needsFree = 1; - ob->derivedFinal->release(ob->derivedFinal); - ob->derivedFinal = NULL; - } - if (ob->derivedDeform) { - ob->derivedDeform->needsFree = 1; - ob->derivedDeform->release(ob->derivedDeform); - ob->derivedDeform = NULL; - } - - if (ob->sculpt) { - BKE_object_sculpt_modifiers_changed(ob); - } -} - static void mesh_build_data(Scene *scene, Object *ob, CustomDataMask dataMask, int build_shapekey_layers) { @@ -2205,7 +2173,8 @@ static void mesh_build_data(Scene *scene, Object *ob, CustomDataMask dataMask, BLI_assert(ob->type == OB_MESH); - clear_mesh_caches(ob); + BKE_object_free_derived_caches(ob); + BKE_object_sculpt_modifiers_changed(ob); mesh_calc_modifiers(scene, ob, NULL, &ob->derivedDeform, &ob->derivedFinal, 0, 1, @@ -2226,7 +2195,8 @@ static void mesh_build_data(Scene *scene, Object *ob, CustomDataMask dataMask, static void editbmesh_build_data(Scene *scene, Object *obedit, BMEditMesh *em, CustomDataMask dataMask) { - clear_mesh_caches(obedit); + BKE_object_free_derived_caches(obedit); + BKE_object_sculpt_modifiers_changed(obedit); if (em->derivedFinal) { if (em->derivedFinal != em->derivedCage) { |