[Bf-blender-cvs] [60772baebf6] blender-v3.2-release: Fix T97709: Compositor: Scenes are being set to no users after doing a full copy.

Bastien Montagne noreply at git.blender.org
Wed May 4 17:29:55 CEST 2022


Commit: 60772baebf6cf4bb54bc7d04a758c78d639062cf
Author: Bastien Montagne
Date:   Wed May 4 17:05:12 2022 +0200
Branches: blender-v3.2-release
https://developer.blender.org/rB60772baebf6cf4bb54bc7d04a758c78d639062cf

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.

===================================================================

M	source/blender/blenkernel/BKE_lib_remap.h
M	source/blender/blenkernel/intern/scene.cc

===================================================================

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) {



More information about the Bf-blender-cvs mailing list