diff options
-rw-r--r-- | source/blender/blenkernel/intern/layer.c | 5 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/lib_override.c | 6 |
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. |