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:
-rw-r--r--source/blender/blenkernel/intern/layer.c5
-rw-r--r--source/blender/blenkernel/intern/lib_override.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 61b031396dd..23ea306c1a8 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -748,6 +748,11 @@ int BKE_layer_collection_findindex(ViewLayer *view_layer, const LayerCollection
*
* WARNING: This is not threadsafe at all, only use from main thread.
*
+ * NOTE: It is probably needed to use #BKE_main_collection_sync_remap instead
+ * of just #BKE_main_collection_sync after disabling LayerCollection resync,
+ * unless it is absolutely certain that no ID remapping (or any other process
+ * that may invalidate the caches) will happen while it is disabled.
+ *
* NOTE: This is a quick and safe band-aid around the long-known issue
* regarding this resync process.
* Proper fix would be to make resync itself lazy, i.e. only happen
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index 8b63594955f..8e67547b719 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -772,7 +772,11 @@ static void lib_override_library_create_post_process(Main *bmain,
/* NOTE: We only care about local IDs here, if a linked object is not instantiated in any way we
* do not do anything about it. */
- BKE_main_collection_sync(bmain);
+ /* We need to use the `_remap` version here as we prevented any LayerCollection resync during the
+ * whole liboverride resyncing, which involves a lot of ID remapping.
+ *
+ * Otherwise, cached Base GHash e.g. can contain invalid stale data. */
+ BKE_main_collection_sync_remap(bmain);
/* We create a set of all objects referenced into the scene by its hierarchy of collections.
* NOTE: This is different that the list of bases, since objects in excluded collections etc.