Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <mont29>2022-03-16 19:52:16 +0300
committerBastien Montagne <bastien@blender.org>2022-03-16 20:34:20 +0300
commit7e06fc11b7cbf532bd8017b270f53e3a11f21523 (patch)
treeb4ae479c1c11701083bbede23c670629eb71bb10 /source/blender/blenkernel/BKE_lib_remap.h
parent2564d152d6edf65afcb573598a1303483c62eb06 (diff)
Add 'multiple' variant of ID relink function.
Similar to other changes to ID remapping, gives huge speedups in some cases, like certain types of liboverride creation. Case from {T96092} goes from 1725 seconds (almost 30 minutes) to 45 seconds to generate the liboverride, on my machine. Reviewed By: jbakker Maniphest Tasks: T96092 Differential Revision: https://developer.blender.org/D14240
Diffstat (limited to 'source/blender/blenkernel/BKE_lib_remap.h')
-rw-r--r--source/blender/blenkernel/BKE_lib_remap.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_lib_remap.h b/source/blender/blenkernel/BKE_lib_remap.h
index fd7d39fc250..b66d53b2321 100644
--- a/source/blender/blenkernel/BKE_lib_remap.h
+++ b/source/blender/blenkernel/BKE_lib_remap.h
@@ -26,6 +26,7 @@ extern "C" {
struct ID;
struct IDRemapper;
+struct LinkNode;
/* BKE_libblock_free, delete are declared in BKE_lib_id.h for convenience. */
@@ -133,6 +134,15 @@ void BKE_libblock_relink_ex(struct Main *bmain,
void *old_idv,
void *new_idv,
short remap_flags) ATTR_NONNULL(1, 2);
+/**
+ * Same as #BKE_libblock_relink_ex, but applies all rules defined in \a id_remapper to \a ids (or
+ * does cleanup if `ID_REMAP_TYPE_CLEANUP` is specified as \a remap_type).
+ */
+void BKE_libblock_relink_multiple(struct Main *bmain,
+ struct LinkNode *ids,
+ const eIDRemapType remap_type,
+ struct IDRemapper *id_remapper,
+ const short remap_flags);
/**
* Remaps ID usages of given ID to their `id->newid` pointer if not None, and proceeds recursively