diff options
author | Bastien Montagne <bastien@blender.org> | 2020-10-06 18:43:12 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2020-10-07 12:09:36 +0300 |
commit | 874cf52c10d73911cfec709d9b0202ac690aab6f (patch) | |
tree | eb168090d49f83ac37bfd259a7b0e794e92b1937 /source/blender/blenkernel/BKE_lib_id.h | |
parent | 94f91827f8938153dad7d4b7f88fa8431f2f756c (diff) |
Refactor: Remove `BKE_XXX_localize()`, in favor of using regular ID copying code.
Besides the NodeTree case (which remains unchanged), the localize code
is only used in one place (to generate previews of shading data-blocks).
This commit introduces a new `LIB_ID_CREATE_LOCAL` option for ID
creation/copying, which essentially implements the behavior of the
removed `BKE_XXX_localize()` functions into regular mainstream ID copy
code. When this option is set:
- new ID is tagged with `LIB_TAG_LOCALIZED`;
- Some ID copying callbacks have specific behaviors, mainly the root
nodetree of shading IDs gets duplicated with specialized
`ntreeLocalize()` function.
Note that I would not consider getting rid of `ntreeLocalize` for now,
this function is recursive, which should ideally never happen within ID
management copying code (this introduces all kind of complications).
No behavioral change expected from this commit.
Diffstat (limited to 'source/blender/blenkernel/BKE_lib_id.h')
-rw-r--r-- | source/blender/blenkernel/BKE_lib_id.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_lib_id.h b/source/blender/blenkernel/BKE_lib_id.h index c3c4c228b61..33ccd20bcff 100644 --- a/source/blender/blenkernel/BKE_lib_id.h +++ b/source/blender/blenkernel/BKE_lib_id.h @@ -99,6 +99,12 @@ enum { /** Do not tag new ID for update in depsgraph. */ LIB_ID_CREATE_NO_DEG_TAG = 1 << 8, + /** Very similar to #LIB_ID_CREATE_NO_MAIN, and should never be used with it (typically combined + * with #LIB_ID_CREATE_LOCALIZE or #LIB_ID_COPY_LOCALIZE in fact). + * It ensures that IDs created with it will get the #LIB_TAG_LOCALIZED tag, and uses some + * specific code in some copy cases (mostly for node trees). */ + LIB_ID_CREATE_LOCAL = 1 << 9, + /* *** Specific options to some ID types or usages. *** */ /* *** May be ignored by unrelated ID copying functions. *** */ /** Object only, needed by make_local code. */ |