From b9c400cee2ea34fc1d1a03bf27938d56785a11a5 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 29 Aug 2019 16:34:17 +0200 Subject: BKE_libblock_relink_ex: pass all remapping flags instead of a single boolean. There is no reasons to limit access to remapping flags here, we may want to use other options than only the ID_REMAP_SKIP_NEVER_NULL_USAGE one... --- source/blender/blenkernel/BKE_library_remap.h | 2 +- source/blender/blenkernel/intern/library.c | 4 ++-- source/blender/blenkernel/intern/library_remap.c | 7 +++---- source/blender/blenkernel/intern/scene.c | 6 +++++- 4 files changed, 11 insertions(+), 8 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/BKE_library_remap.h b/source/blender/blenkernel/BKE_library_remap.h index 917582e385a..784e1a570c5 100644 --- a/source/blender/blenkernel/BKE_library_remap.h +++ b/source/blender/blenkernel/BKE_library_remap.h @@ -85,7 +85,7 @@ void BKE_libblock_relink_ex(struct Main *bmain, void *idv, void *old_idv, void *new_idv, - const bool us_min_never_null) ATTR_NONNULL(1, 2); + const short remap_flags) ATTR_NONNULL(1, 2); void BKE_libblock_relink_to_newid(struct ID *id) ATTR_NONNULL(); diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 7c9f5c0ae77..5dbc9c318a3 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -851,8 +851,8 @@ void BKE_id_swap(Main *bmain, ID *id_a, ID *id_b) id_b->properties = id_a_back.properties; /* Swap will have broken internal references to itself, restore them. */ - BKE_libblock_relink_ex(bmain, id_a, id_b, id_a, false); - BKE_libblock_relink_ex(bmain, id_b, id_a, id_b, false); + BKE_libblock_relink_ex(bmain, id_a, id_b, id_a, ID_REMAP_SKIP_NEVER_NULL_USAGE); + BKE_libblock_relink_ex(bmain, id_b, id_a, id_b, ID_REMAP_SKIP_NEVER_NULL_USAGE); } /** Does *not* set ID->newid pointer. */ diff --git a/source/blender/blenkernel/intern/library_remap.c b/source/blender/blenkernel/intern/library_remap.c index 04ea540fac9..61f506a8a6c 100644 --- a/source/blender/blenkernel/intern/library_remap.c +++ b/source/blender/blenkernel/intern/library_remap.c @@ -652,12 +652,11 @@ void BKE_libblock_unlink(Main *bmain, * ... sigh */ void BKE_libblock_relink_ex( - Main *bmain, void *idv, void *old_idv, void *new_idv, const bool us_min_never_null) + Main *bmain, void *idv, void *old_idv, void *new_idv, const short remap_flags) { ID *id = idv; ID *old_id = old_idv; ID *new_id = new_idv; - int remap_flags = us_min_never_null ? 0 : ID_REMAP_SKIP_NEVER_NULL_USAGE; /* No need to lock here, we are only affecting given ID, not bmain database. */ @@ -945,7 +944,7 @@ void BKE_id_free_ex(Main *bmain, void *idv, int flag, const bool use_flag_from_i #endif if ((flag & LIB_ID_FREE_NO_USER_REFCOUNT) == 0) { - BKE_libblock_relink_ex(bmain, id, NULL, NULL, true); + BKE_libblock_relink_ex(bmain, id, NULL, NULL, 0); } BKE_libblock_free_datablock(id, flag); @@ -1091,7 +1090,7 @@ static void id_delete(Main *bmain, const bool do_tagged_deletion) bmain, id, NULL, ID_REMAP_FLAG_NEVER_NULL_USAGE | ID_REMAP_FORCE_NEVER_NULL_USAGE); /* Since we removed ID from Main, * we also need to unlink its own other IDs usages ourself. */ - BKE_libblock_relink_ex(bmain, id, NULL, NULL, true); + BKE_libblock_relink_ex(bmain, id, NULL, NULL, 0); /* Now we can safely mark that ID as not being in Main database anymore. */ id->tag |= LIB_TAG_NO_MAIN; /* This is needed because we may not have remapped usages diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 1ef93427253..ef49c958d37 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -268,7 +268,11 @@ void BKE_scene_copy_data(Main *bmain, Scene *sce_dst, const Scene *sce_src, cons /* Note: nodetree is *not* in bmain, however this specific case is handled at lower level * (see BKE_libblock_copy_ex()). */ BKE_id_copy_ex(bmain, (ID *)sce_src->nodetree, (ID **)&sce_dst->nodetree, flag); - BKE_libblock_relink_ex(bmain, sce_dst->nodetree, (void *)(&sce_src->id), &sce_dst->id, false); + BKE_libblock_relink_ex(bmain, + sce_dst->nodetree, + (void *)(&sce_src->id), + &sce_dst->id, + ID_REMAP_SKIP_NEVER_NULL_USAGE); } if (sce_src->rigidbody_world) { -- cgit v1.2.3