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:
authorBastien Montagne <bastien@blender.org>2021-08-05 12:29:46 +0300
committerBastien Montagne <bastien@blender.org>2021-08-05 12:31:49 +0300
commit03e2f11d48dc4e7bb8124c4c4be3403aea56e0c8 (patch)
treed5cb76e788390abe1aac6297a3c7d46e26eae25c
parent647a8bff06bfabeafa01333d4b9d8d8b8ae1c569 (diff)
Fix T89835: Crash after Instancing to Scene after making linked Collection local.
Even though the ID itself remain the same after being made local, from depsgraph point of view this is a different ID. Hence we need to tag all of its users for COW update, as well as rebuild depsgraph relationships. Should be also backported to LTS 2.93 (and 2.83 if possible).
-rw-r--r--source/blender/blenkernel/intern/lib_id.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c
index 62d29188c5a..5e1027c62af 100644
--- a/source/blender/blenkernel/intern/lib_id.c
+++ b/source/blender/blenkernel/intern/lib_id.c
@@ -73,6 +73,7 @@
#include "BKE_rigidbody.h"
#include "DEG_depsgraph.h"
+#include "DEG_depsgraph_build.h"
#include "RNA_access.h"
@@ -141,7 +142,8 @@ static int lib_id_clear_library_data_users_update_cb(LibraryIDLinkCallbackData *
{
ID *id = cb_data->user_data;
if (*cb_data->id_pointer == id) {
- DEG_id_tag_update_ex(cb_data->bmain, cb_data->id_owner, ID_RECALC_TAG_FOR_UNDO);
+ DEG_id_tag_update_ex(
+ cb_data->bmain, cb_data->id_owner, ID_RECALC_TAG_FOR_UNDO | ID_RECALC_COPY_ON_WRITE);
return IDWALK_RET_STOP_ITER;
}
return IDWALK_RET_NOP;
@@ -193,6 +195,8 @@ static void lib_id_clear_library_data_ex(Main *bmain, ID *id)
if (key != NULL) {
lib_id_clear_library_data_ex(bmain, &key->id);
}
+
+ DEG_relations_tag_update(bmain);
}
void BKE_lib_id_clear_library_data(Main *bmain, ID *id)