From c4fc19f064c1b76b6be68e04226dfa3d48e91fb7 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Mon, 20 May 2024 13:18:24 -0400 Subject: [PATCH] Cleanup: Use reference argument for BKE_mesh_copy_for_eval --- source/blender/blenkernel/BKE_mesh.h | 5 ++--- source/blender/blenkernel/intern/cloth.cc | 2 +- source/blender/blenkernel/intern/crazyspace.cc | 4 ++-- .../blender/blenkernel/intern/dynamicpaint.cc | 10 +++++----- source/blender/blenkernel/intern/fluid.cc | 12 ++++++------ .../intern/geometry_component_mesh.cc | 6 +++--- source/blender/blenkernel/intern/mesh.cc | 4 ++-- .../blender/blenkernel/intern/mesh_convert.cc | 4 ++-- .../blenkernel/intern/mesh_data_update.cc | 18 +++++++++--------- source/blender/blenkernel/intern/multires.cc | 2 +- .../editors/geometry/node_group_operator.cc | 4 ++-- source/blender/editors/object/object_add.cc | 4 ++-- source/blender/editors/object/object_remesh.cc | 4 ++-- source/blender/geometry/intern/mesh_boolean.cc | 2 +- source/blender/geometry/intern/reorder.cc | 2 +- source/blender/io/collada/collada_utils.cpp | 2 +- .../io/usd/intern/usd_blend_shape_utils.cc | 2 +- source/blender/modifiers/intern/MOD_array.cc | 2 +- .../modifiers/intern/MOD_particlesystem.cc | 4 ++-- source/blender/modifiers/intern/MOD_surface.cc | 2 +- .../nodes/node_geo_subdivision_surface.cc | 2 +- source/blender/render/intern/bake.cc | 4 ++-- 22 files changed, 50 insertions(+), 51 deletions(-) diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 3bca1fec250..a10c8f7f486 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -125,10 +125,9 @@ Mesh *BKE_mesh_new_nomain_from_template_ex(const Mesh *me_src, CustomData_MeshMasks mask); /** - * Performs copy for use during evaluation, - * optional referencing original arrays to reduce memory. + * Performs copy for use during evaluation. */ -Mesh *BKE_mesh_copy_for_eval(const Mesh *source); +Mesh *BKE_mesh_copy_for_eval(const Mesh &source); /** * These functions construct a new Mesh, diff --git a/source/blender/blenkernel/intern/cloth.cc b/source/blender/blenkernel/intern/cloth.cc index a0dd427d97a..e52e90cfc7f 100644 --- a/source/blender/blenkernel/intern/cloth.cc +++ b/source/blender/blenkernel/intern/cloth.cc @@ -1162,7 +1162,7 @@ static void cloth_update_verts(Object *ob, ClothModifierData *clmd, Mesh *mesh) static Mesh *cloth_make_rest_mesh(ClothModifierData *clmd, Mesh *mesh) { using namespace blender; - Mesh *new_mesh = BKE_mesh_copy_for_eval(mesh); + Mesh *new_mesh = BKE_mesh_copy_for_eval(*mesh); ClothVertex *verts = clmd->clothObject->verts; MutableSpan positions = mesh->vert_positions_for_write(); diff --git a/source/blender/blenkernel/intern/crazyspace.cc b/source/blender/blenkernel/intern/crazyspace.cc index 60151d9e6ac..3379403beb8 100644 --- a/source/blender/blenkernel/intern/crazyspace.cc +++ b/source/blender/blenkernel/intern/crazyspace.cc @@ -372,7 +372,7 @@ int BKE_sculpt_get_first_deform_matrices(Depsgraph *depsgraph, if (deformmats.is_empty()) { /* NOTE: Evaluated object is re-set to its original un-deformed state. */ Mesh *mesh = static_cast(object_eval.data); - mesh_eval = BKE_mesh_copy_for_eval(mesh); + mesh_eval = BKE_mesh_copy_for_eval(*mesh); deformcos = mesh->vert_positions(); deformmats.reinitialize(mesh->verts_num); deformmats.fill(blender::float3x3::identity()); @@ -456,7 +456,7 @@ void BKE_crazyspace_build_sculpt(Depsgraph *depsgraph, } if (mesh_eval == nullptr) { - mesh_eval = BKE_mesh_copy_for_eval(mesh); + mesh_eval = BKE_mesh_copy_for_eval(*mesh); } mti->deform_verts(md, &mectx, mesh_eval, deformedVerts); diff --git a/source/blender/blenkernel/intern/dynamicpaint.cc b/source/blender/blenkernel/intern/dynamicpaint.cc index c9c4b361642..98bf6b59e66 100644 --- a/source/blender/blenkernel/intern/dynamicpaint.cc +++ b/source/blender/blenkernel/intern/dynamicpaint.cc @@ -1916,7 +1916,7 @@ static void dynamic_paint_apply_surface_wave_cb(void *__restrict userdata, */ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *ob, Mesh *mesh) { - Mesh *result = BKE_mesh_copy_for_eval(mesh); + Mesh *result = BKE_mesh_copy_for_eval(*mesh); if (pmd->canvas && !(pmd->canvas->flags & MOD_DPAINT_BAKING) && pmd->type == MOD_DYNAMICPAINT_TYPE_CANVAS) @@ -2069,7 +2069,7 @@ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object * if (runtime_data->brush_mesh != nullptr) { BKE_id_free(nullptr, runtime_data->brush_mesh); } - runtime_data->brush_mesh = BKE_mesh_copy_for_eval(result); + runtime_data->brush_mesh = BKE_mesh_copy_for_eval(*result); } return result; @@ -2090,7 +2090,7 @@ static void canvas_copyMesh(DynamicPaintCanvasSettings *canvas, Mesh *mesh) BKE_id_free(nullptr, runtime->canvas_mesh); } - runtime->canvas_mesh = BKE_mesh_copy_for_eval(mesh); + runtime->canvas_mesh = BKE_mesh_copy_for_eval(*mesh); } /* @@ -3827,7 +3827,7 @@ static void dynamicPaint_brushMeshCalculateVelocity(Depsgraph *depsgraph, SUBFRAME_RECURSION, BKE_scene_ctime_get(scene), eModifierType_DynamicPaint); - mesh_p = BKE_mesh_copy_for_eval(dynamicPaint_brush_mesh_get(brush)); + mesh_p = BKE_mesh_copy_for_eval(*dynamicPaint_brush_mesh_get(brush)); numOfVerts_p = mesh_p->verts_num; float(*positions_p)[3] = reinterpret_cast( @@ -4319,7 +4319,7 @@ static bool dynamicPaint_paintMesh(Depsgraph *depsgraph, Bounds3D mesh_bb = {{0}}; DynamicPaintVolumeGrid *grid = bData->grid; - mesh = BKE_mesh_copy_for_eval(brush_mesh); + mesh = BKE_mesh_copy_for_eval(*brush_mesh); blender::MutableSpan positions = mesh->vert_positions_for_write(); const blender::Span vert_normals = mesh->vert_normals(); const blender::Span corner_verts = mesh->corner_verts(); diff --git a/source/blender/blenkernel/intern/fluid.cc b/source/blender/blenkernel/intern/fluid.cc index d60b7b4ee35..dd1896e1f65 100644 --- a/source/blender/blenkernel/intern/fluid.cc +++ b/source/blender/blenkernel/intern/fluid.cc @@ -1015,7 +1015,7 @@ static void obstacles_from_mesh(Object *coll_ob, float *vert_vel = nullptr; bool has_velocity = false; - Mesh *mesh = BKE_mesh_copy_for_eval(fes->mesh); + Mesh *mesh = BKE_mesh_copy_for_eval(*fes->mesh); blender::MutableSpan positions = mesh->vert_positions_for_write(); int min[3], max[3], res[3]; @@ -2080,7 +2080,7 @@ static void emit_from_mesh( /* Copy mesh for thread safety as we modify it. * Main issue is its VertArray being modified, then replaced and freed. */ - Mesh *mesh = BKE_mesh_copy_for_eval(ffs->mesh); + Mesh *mesh = BKE_mesh_copy_for_eval(*ffs->mesh); blender::MutableSpan positions = mesh->vert_positions_for_write(); const blender::Span corner_verts = mesh->corner_verts(); @@ -3396,7 +3396,7 @@ static Mesh *create_smoke_geometry(FluidDomainSettings *fds, Mesh *orgmesh, Obje /* Just copy existing mesh if there is no content or if the adaptive domain is not being used. */ if (fds->total_cells <= 1 || (fds->flags & FLUID_DOMAIN_USE_ADAPTIVE_DOMAIN) == 0) { - return BKE_mesh_copy_for_eval(orgmesh); + return BKE_mesh_copy_for_eval(*orgmesh); } result = BKE_mesh_new_nomain(num_verts, 0, num_faces, num_faces * 4); @@ -3622,7 +3622,7 @@ static void fluid_modifier_processFlow(FluidModifierData *fmd, if (fmd->flow->mesh) { BKE_id_free(nullptr, fmd->flow->mesh); } - fmd->flow->mesh = BKE_mesh_copy_for_eval(mesh); + fmd->flow->mesh = BKE_mesh_copy_for_eval(*mesh); } if (scene_framenr > fmd->time) { @@ -3649,7 +3649,7 @@ static void fluid_modifier_processEffector(FluidModifierData *fmd, if (fmd->effector->mesh) { BKE_id_free(nullptr, fmd->effector->mesh); } - fmd->effector->mesh = BKE_mesh_copy_for_eval(mesh); + fmd->effector->mesh = BKE_mesh_copy_for_eval(*mesh); } if (scene_framenr > fmd->time) { @@ -4161,7 +4161,7 @@ Mesh *BKE_fluid_modifier_do( } if (!result) { - result = BKE_mesh_copy_for_eval(mesh); + result = BKE_mesh_copy_for_eval(*mesh); } else { BKE_mesh_copy_parameters_for_eval(result, mesh); diff --git a/source/blender/blenkernel/intern/geometry_component_mesh.cc b/source/blender/blenkernel/intern/geometry_component_mesh.cc index b03f3319485..c6983df51ea 100644 --- a/source/blender/blenkernel/intern/geometry_component_mesh.cc +++ b/source/blender/blenkernel/intern/geometry_component_mesh.cc @@ -42,7 +42,7 @@ GeometryComponentPtr MeshComponent::copy() const { MeshComponent *new_component = new MeshComponent(); if (mesh_ != nullptr) { - new_component->mesh_ = BKE_mesh_copy_for_eval(mesh_); + new_component->mesh_ = BKE_mesh_copy_for_eval(*mesh_); new_component->ownership_ = GeometryOwnershipType::Owned; } return GeometryComponentPtr(new_component); @@ -89,7 +89,7 @@ Mesh *MeshComponent::get_for_write() { BLI_assert(this->is_mutable()); if (ownership_ == GeometryOwnershipType::ReadOnly) { - mesh_ = BKE_mesh_copy_for_eval(mesh_); + mesh_ = BKE_mesh_copy_for_eval(*mesh_); ownership_ = GeometryOwnershipType::Owned; } return mesh_; @@ -110,7 +110,7 @@ void MeshComponent::ensure_owns_direct_data() BLI_assert(this->is_mutable()); if (ownership_ != GeometryOwnershipType::Owned) { if (mesh_) { - mesh_ = BKE_mesh_copy_for_eval(mesh_); + mesh_ = BKE_mesh_copy_for_eval(*mesh_); } ownership_ = GeometryOwnershipType::Owned; } diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc index 3dcc822f319..37453197c3c 100644 --- a/source/blender/blenkernel/intern/mesh.cc +++ b/source/blender/blenkernel/intern/mesh.cc @@ -842,10 +842,10 @@ Mesh *BKE_mesh_new_nomain_from_template(const Mesh *me_src, me_src, verts_num, edges_num, 0, faces_num, corners_num, CD_MASK_EVERYTHING); } -Mesh *BKE_mesh_copy_for_eval(const Mesh *source) +Mesh *BKE_mesh_copy_for_eval(const Mesh &source) { return reinterpret_cast( - BKE_id_copy_ex(nullptr, &source->id, nullptr, LIB_ID_COPY_LOCALIZE)); + BKE_id_copy_ex(nullptr, &source.id, nullptr, LIB_ID_COPY_LOCALIZE)); } BMesh *BKE_mesh_to_bmesh_ex(const Mesh *mesh, diff --git a/source/blender/blenkernel/intern/mesh_convert.cc b/source/blender/blenkernel/intern/mesh_convert.cc index 733b6c163b2..189686d1bed 100644 --- a/source/blender/blenkernel/intern/mesh_convert.cc +++ b/source/blender/blenkernel/intern/mesh_convert.cc @@ -706,7 +706,7 @@ static const Curves *get_evaluated_curves_from_object(const Object *object) static Mesh *mesh_new_from_evaluated_curve_type_object(const Object *evaluated_object) { if (const Mesh *mesh = BKE_object_get_evaluated_mesh(evaluated_object)) { - return BKE_mesh_copy_for_eval(mesh); + return BKE_mesh_copy_for_eval(*mesh); } if (const Curves *curves = get_evaluated_curves_from_object(evaluated_object)) { const blender::bke::AnonymousAttributePropagationInfo propagation_info; @@ -765,7 +765,7 @@ static Mesh *mesh_new_from_mball_object(Object *object) return (Mesh *)BKE_id_new_nomain(ID_ME, ((ID *)object->data)->name + 2); } - return BKE_mesh_copy_for_eval(mesh_eval); + return BKE_mesh_copy_for_eval(*mesh_eval); } static Mesh *mesh_new_from_mesh(Object *object, const Mesh *mesh) diff --git a/source/blender/blenkernel/intern/mesh_data_update.cc b/source/blender/blenkernel/intern/mesh_data_update.cc index f0fff94c70c..26b94e8802e 100644 --- a/source/blender/blenkernel/intern/mesh_data_update.cc +++ b/source/blender/blenkernel/intern/mesh_data_update.cc @@ -158,7 +158,7 @@ static Mesh *create_orco_mesh(const Object &ob, BKE_mesh_ensure_default_orig_index_customdata(orco_mesh); } else { - orco_mesh = BKE_mesh_copy_for_eval(&mesh); + orco_mesh = BKE_mesh_copy_for_eval(mesh); } Array storage; @@ -372,7 +372,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph, if (ob.modifier_flag & OB_MODIFIER_FLAG_ADD_REST_POSITION) { if (mesh_final == nullptr) { - mesh_final = BKE_mesh_copy_for_eval(&mesh_input); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); ASSERT_IS_VALID_MESH(mesh_final); } set_rest_position(*mesh_final); @@ -390,7 +390,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph, if (mti->type == ModifierTypeType::OnlyDeform && !sculpt_dyntopo) { ScopedModifierTimer modifier_timer{*md}; if (!mesh_final) { - mesh_final = BKE_mesh_copy_for_eval(&mesh_input); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); ASSERT_IS_VALID_MESH(mesh_final); } @@ -413,7 +413,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph, * places that wish to use the original mesh but with deformed * coordinates (like vertex paint). */ if (r_deform) { - mesh_deform = BKE_mesh_copy_for_eval(mesh_final ? mesh_final : &mesh_input); + mesh_deform = BKE_mesh_copy_for_eval(mesh_final ? *mesh_final : mesh_input); } } @@ -485,7 +485,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph, if (mti->type == ModifierTypeType::OnlyDeform) { if (!mesh_final) { - mesh_final = BKE_mesh_copy_for_eval(&mesh_input); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); ASSERT_IS_VALID_MESH(mesh_final); } BKE_modifier_deform_verts(md, &mectx, mesh_final, mesh_final->vert_positions_for_write()); @@ -500,7 +500,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph, } } else { - mesh_final = BKE_mesh_copy_for_eval(&mesh_input); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); ASSERT_IS_VALID_MESH(mesh_final); check_for_needs_mapping = true; } @@ -665,7 +665,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph, mesh_final = &mesh_input; } else { - mesh_final = BKE_mesh_copy_for_eval(&mesh_input); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); } } @@ -709,7 +709,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph, /* Not yet finalized by any instance, do it now * Isolate since computing normals is multithreaded and we are holding a lock. */ threading::isolate_task([&] { - mesh_final = BKE_mesh_copy_for_eval(&mesh_input); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); mesh_calc_finalize(mesh_input, *mesh_final); runtime->mesh_eval = mesh_final; }); @@ -860,7 +860,7 @@ static void editbmesh_calc_modifiers(Depsgraph &depsgraph, /* If the cage mesh has already been assigned, we have passed the cage index in the modifier * list. If the cage and final meshes are still the same, duplicate the final mesh so the * cage mesh isn't modified anymore. */ - mesh_final = BKE_mesh_copy_for_eval(mesh_final); + mesh_final = BKE_mesh_copy_for_eval(*mesh_final); if (mesh_cage->runtime->edit_mesh) { mesh_final->runtime->edit_mesh = mesh_cage->runtime->edit_mesh; mesh_final->runtime->is_original_bmesh = true; diff --git a/source/blender/blenkernel/intern/multires.cc b/source/blender/blenkernel/intern/multires.cc index 9a13b59d88b..7b264c73e30 100644 --- a/source/blender/blenkernel/intern/multires.cc +++ b/source/blender/blenkernel/intern/multires.cc @@ -236,7 +236,7 @@ Mesh *BKE_multires_create_mesh(Depsgraph *depsgraph, Object *object, MultiresMod Mesh *result = mti->modify_mesh(&mmd->modifier, &modifier_ctx, deformed_mesh); if (result == deformed_mesh) { - result = BKE_mesh_copy_for_eval(deformed_mesh); + result = BKE_mesh_copy_for_eval(*deformed_mesh); } return result; } diff --git a/source/blender/editors/geometry/node_group_operator.cc b/source/blender/editors/geometry/node_group_operator.cc index fb850972a25..e6f39d1f7a6 100644 --- a/source/blender/editors/geometry/node_group_operator.cc +++ b/source/blender/editors/geometry/node_group_operator.cc @@ -187,11 +187,11 @@ static bke::GeometrySet get_original_geometry_eval_copy(Object &object) if (std::shared_ptr &em = mesh->runtime->edit_mesh) { Mesh *mesh_copy = BKE_mesh_wrapper_from_editmesh(em, nullptr, mesh); BKE_mesh_wrapper_ensure_mdata(mesh_copy); - Mesh *final_copy = BKE_mesh_copy_for_eval(mesh_copy); + Mesh *final_copy = BKE_mesh_copy_for_eval(*mesh_copy); BKE_id_free(nullptr, mesh_copy); return bke::GeometrySet::from_mesh(final_copy); } - return bke::GeometrySet::from_mesh(BKE_mesh_copy_for_eval(mesh)); + return bke::GeometrySet::from_mesh(BKE_mesh_copy_for_eval(*mesh)); } default: return {}; diff --git a/source/blender/editors/object/object_add.cc b/source/blender/editors/object/object_add.cc index 2117f07ed9c..4bcb4752338 100644 --- a/source/blender/editors/object/object_add.cc +++ b/source/blender/editors/object/object_add.cc @@ -3401,7 +3401,7 @@ static int object_convert_exec(bContext *C, wmOperator *op) */ const Object *ob_eval = DEG_get_evaluated_object(depsgraph, ob); const Mesh *mesh_eval = BKE_object_get_evaluated_mesh(ob_eval); - Mesh *new_mesh = mesh_eval ? BKE_mesh_copy_for_eval(mesh_eval) : + Mesh *new_mesh = mesh_eval ? BKE_mesh_copy_for_eval(*mesh_eval) : BKE_mesh_new_nomain(0, 0, 0, 0); BKE_object_material_from_eval_data(bmain, newob, &new_mesh->id); /* Anonymous attributes shouldn't be available on the applied geometry. */ @@ -3634,7 +3634,7 @@ static int object_convert_exec(bContext *C, wmOperator *op) newob->type = OB_MESH; if (const Mesh *mesh_eval = geometry.get_mesh()) { - BKE_mesh_nomain_to_mesh(BKE_mesh_copy_for_eval(mesh_eval), new_mesh, newob); + BKE_mesh_nomain_to_mesh(BKE_mesh_copy_for_eval(*mesh_eval), new_mesh, newob); BKE_object_material_from_eval_data(bmain, newob, &mesh_eval->id); new_mesh->attributes_for_write().remove_anonymous(); } diff --git a/source/blender/editors/object/object_remesh.cc b/source/blender/editors/object/object_remesh.cc index 39d8215c5ea..fff1c5c33fc 100644 --- a/source/blender/editors/object/object_remesh.cc +++ b/source/blender/editors/object/object_remesh.cc @@ -759,7 +759,7 @@ static Mesh *remesh_symmetry_bisect(Mesh *mesh, eSymmetryAxes symmetry_axes) mmd.tolerance = QUADRIFLOW_MIRROR_BISECT_TOLERANCE; Mesh *mesh_bisect, *mesh_bisect_temp; - mesh_bisect = BKE_mesh_copy_for_eval(mesh); + mesh_bisect = BKE_mesh_copy_for_eval(*mesh); int axis; float plane_co[3], plane_no[3]; @@ -841,7 +841,7 @@ static void quadriflow_start_job(void *customdata, wmJobWorkerStatus *worker_sta /* Run Quadriflow bisect operations on a copy of the mesh to keep the code readable without * freeing the original ID */ - bisect_mesh = BKE_mesh_copy_for_eval(mesh); + bisect_mesh = BKE_mesh_copy_for_eval(*mesh); /* Bisect the input mesh using the paint symmetry settings */ bisect_mesh = remesh_symmetry_bisect(bisect_mesh, qj->symmetry_axes); diff --git a/source/blender/geometry/intern/mesh_boolean.cc b/source/blender/geometry/intern/mesh_boolean.cc index b7ec64865d4..35d115065bf 100644 --- a/source/blender/geometry/intern/mesh_boolean.cc +++ b/source/blender/geometry/intern/mesh_boolean.cc @@ -1075,7 +1075,7 @@ static Mesh *mesh_boolean_float(Span meshes, if (meshes.size() == 1) { /* The float solver doesn't do self union. Just return nullptr, which will * cause geometry nodes to leave the input as is. */ - return BKE_mesh_copy_for_eval(meshes[0]); + return BKE_mesh_copy_for_eval(*meshes[0]); } Array> looptris; diff --git a/source/blender/geometry/intern/reorder.cc b/source/blender/geometry/intern/reorder.cc index 8eb23f8275b..12360b06238 100644 --- a/source/blender/geometry/intern/reorder.cc +++ b/source/blender/geometry/intern/reorder.cc @@ -242,7 +242,7 @@ Mesh *reorder_mesh(const Mesh &src_mesh, bke::AttrDomain domain, const bke::AnonymousAttributePropagationInfo &propagation_info) { - Mesh *dst_mesh = BKE_mesh_copy_for_eval(&src_mesh); + Mesh *dst_mesh = BKE_mesh_copy_for_eval(src_mesh); clean_unused_attributes(propagation_info, dst_mesh->attributes_for_write()); reorder_mesh_exec(src_mesh, old_by_new_map, domain, *dst_mesh); return dst_mesh; diff --git a/source/blender/io/collada/collada_utils.cpp b/source/blender/io/collada/collada_utils.cpp index 225c525f170..6c8f6ef7b28 100644 --- a/source/blender/io/collada/collada_utils.cpp +++ b/source/blender/io/collada/collada_utils.cpp @@ -282,7 +282,7 @@ Mesh *bc_get_mesh_copy(BlenderContext &blender_context, tmpmesh = (Mesh *)ob->data; } - Mesh *mesh = BKE_mesh_copy_for_eval(tmpmesh); + Mesh *mesh = BKE_mesh_copy_for_eval(*tmpmesh); if (triangulate) { bc_triangulate_mesh(mesh); diff --git a/source/blender/io/usd/intern/usd_blend_shape_utils.cc b/source/blender/io/usd/intern/usd_blend_shape_utils.cc index b3e7681f2db..bb7be6c07ac 100644 --- a/source/blender/io/usd/intern/usd_blend_shape_utils.cc +++ b/source/blender/io/usd/intern/usd_blend_shape_utils.cc @@ -505,7 +505,7 @@ Mesh *get_shape_key_basis_mesh(Object *obj) } /* Make a copy of the mesh so we can update the verts to the basis shape. */ - Mesh *temp_mesh = BKE_mesh_copy_for_eval(mesh); + Mesh *temp_mesh = BKE_mesh_copy_for_eval(*mesh); /* Update the verts. */ BKE_keyblock_convert_to_mesh( diff --git a/source/blender/modifiers/intern/MOD_array.cc b/source/blender/modifiers/intern/MOD_array.cc index a0c93b7824d..9893e386e9e 100644 --- a/source/blender/modifiers/intern/MOD_array.cc +++ b/source/blender/modifiers/intern/MOD_array.cc @@ -384,7 +384,7 @@ static Mesh *arrayModifier_doArray(ArrayModifierData *amd, Mesh *start_cap_mesh = BKE_modifier_get_evaluated_mesh_from_evaluated_object(start_cap_ob); if (start_cap_mesh) { BKE_mesh_wrapper_ensure_mdata(start_cap_mesh); - return BKE_mesh_copy_for_eval(start_cap_mesh); + return BKE_mesh_copy_for_eval(*start_cap_mesh); } } return mesh; diff --git a/source/blender/modifiers/intern/MOD_particlesystem.cc b/source/blender/modifiers/intern/MOD_particlesystem.cc index 2c5ba77ffa9..5adc3ff434d 100644 --- a/source/blender/modifiers/intern/MOD_particlesystem.cc +++ b/source/blender/modifiers/intern/MOD_particlesystem.cc @@ -141,7 +141,7 @@ static void deform_verts(ModifierData *md, } /* make new mesh */ - psmd->mesh_final = BKE_mesh_copy_for_eval(mesh); + psmd->mesh_final = BKE_mesh_copy_for_eval(*mesh); psmd->mesh_final->vert_positions_for_write().copy_from(positions); psmd->mesh_final->tag_positions_changed(); @@ -173,7 +173,7 @@ static void deform_verts(ModifierData *md, /* Make a persistent copy of the mesh. We don't actually need * all this data, just some topology for remapping. Could be * optimized once. */ - psmd->mesh_original = BKE_mesh_copy_for_eval(mesh_original); + psmd->mesh_original = BKE_mesh_copy_for_eval(*mesh_original); } BKE_mesh_tessface_ensure(psmd->mesh_original); diff --git a/source/blender/modifiers/intern/MOD_surface.cc b/source/blender/modifiers/intern/MOD_surface.cc index f553c3b9f44..211688d534f 100644 --- a/source/blender/modifiers/intern/MOD_surface.cc +++ b/source/blender/modifiers/intern/MOD_surface.cc @@ -98,7 +98,7 @@ static void deform_verts(ModifierData *md, } if (mesh) { - surmd->runtime.mesh = BKE_mesh_copy_for_eval(mesh); + surmd->runtime.mesh = BKE_mesh_copy_for_eval(*mesh); } if (!ctx->object->pd) { diff --git a/source/blender/nodes/geometry/nodes/node_geo_subdivision_surface.cc b/source/blender/nodes/geometry/nodes/node_geo_subdivision_surface.cc index 65cf9ac4e9f..fe5f711442a 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_subdivision_surface.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_subdivision_surface.cc @@ -120,7 +120,7 @@ static Mesh *mesh_subsurf_calc(const Mesh *mesh, /* Due to the "BKE_subdiv" API, the crease layers must be on the input mesh. But in this node * they are provided as separate inputs, not as custom data layers. When needed, retrieve the * mesh with write access and store the new crease values there. */ - mesh_copy = BKE_mesh_copy_for_eval(mesh); + mesh_copy = BKE_mesh_copy_for_eval(*mesh); write_vert_creases(*mesh_copy, vert_creases); write_edge_creases(*mesh_copy, edge_creases); mesh = mesh_copy; diff --git a/source/blender/render/intern/bake.cc b/source/blender/render/intern/bake.cc index b08d45b5a00..8d8634dcce2 100644 --- a/source/blender/render/intern/bake.cc +++ b/source/blender/render/intern/bake.cc @@ -579,7 +579,7 @@ bool RE_bake_pixels_populate_from_objects(Mesh *me_low, blender::Array treeData(tot_highpoly); if (!is_cage) { - me_eval_low = BKE_mesh_copy_for_eval(me_low); + me_eval_low = BKE_mesh_copy_for_eval(*me_low); tris_low = mesh_calc_tri_tessface(me_low, true, me_eval_low); } else if (is_custom_cage) { @@ -862,7 +862,7 @@ void RE_bake_normal_world_to_tangent(const BakePixel pixel_array[], TriTessFace *triangles; - Mesh *mesh_eval = BKE_mesh_copy_for_eval(mesh); + Mesh *mesh_eval = BKE_mesh_copy_for_eval(*mesh); triangles = mesh_calc_tri_tessface(mesh, true, mesh_eval);