diff options
author | Bastien Montagne <bastien@blender.org> | 2022-05-04 18:05:12 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-05-04 18:29:50 +0300 |
commit | 60772baebf6cf4bb54bc7d04a758c78d639062cf (patch) | |
tree | 5f02de7b980d57ea13c085df085b533028c5f5b0 /source/blender/blenkernel | |
parent | b5c3885bf05247cb1ddd4569ff13f55f40752d2f (diff) |
Fix T97709: Compositor: Scenes are being set to no users after doing a full copy.
Similar issue/solution as in rB5188c14718c5 from this Monday actually,
there may be more of those still lurking around... Quite surprising they
all get reported now, this behavior has been in Blender since years.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_lib_remap.h | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.cc | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_lib_remap.h b/source/blender/blenkernel/BKE_lib_remap.h index 57afbefd508..f62225179bd 100644 --- a/source/blender/blenkernel/BKE_lib_remap.h +++ b/source/blender/blenkernel/BKE_lib_remap.h @@ -57,7 +57,9 @@ enum { ID_REMAP_FORCE_NEVER_NULL_USAGE = 1 << 3, /** Do not remap library override pointers. */ ID_REMAP_SKIP_OVERRIDE_LIBRARY = 1 << 5, - /** Don't touch the user count (use for low level actions such as swapping pointers). */ + /** Don't touch the special user counts (use when the 'old' remapped ID remains in use): + * - Do not transfer 'fake user' status from old to new ID. + * - Do not clear 'extra user' from old ID. */ ID_REMAP_SKIP_USER_CLEAR = 1 << 6, /** * Force internal ID runtime pointers (like `ID.newid`, `ID.orig_id` etc.) to also be processed. diff --git a/source/blender/blenkernel/intern/scene.cc b/source/blender/blenkernel/intern/scene.cc index eed187b1b0a..e203d32a658 100644 --- a/source/blender/blenkernel/intern/scene.cc +++ b/source/blender/blenkernel/intern/scene.cc @@ -274,7 +274,7 @@ static void scene_copy_data(Main *bmain, ID *id_dst, const ID *id_src, const int scene_dst->nodetree, (void *)(&scene_src->id), &scene_dst->id, - ID_REMAP_SKIP_NEVER_NULL_USAGE); + ID_REMAP_SKIP_NEVER_NULL_USAGE | ID_REMAP_SKIP_USER_CLEAR); } if (scene_src->rigidbody_world) { |