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:
authorSergey Sharybin <sergey.vfx@gmail.com>2015-06-12 00:47:00 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-06-12 00:47:00 +0300
commit7dae8e54cc6d3783ff78f2f4f9674bd4219f652c (patch)
treedc8aba540aa3ff2970903933a989dc0db4486247
parent774e034d40f9494a2523076992fc19e534ecfb17 (diff)
Fix wrong proxy pointer hanging around after making all local
The issue was caused because of the following circumstances: - Making All Local will just iterate all IDs and clear linked flags - It will not do anything with objects which are already local (and since proxy rig is local nothing will be changing it). This commit makes it so id_clear_lib_data() takes care of clearing all related proxy pointers, avoiding situations when proxy rig will point to a local armature. Reviewers: campbellbarton Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D1276
-rw-r--r--source/blender/blenkernel/intern/library.c9
-rw-r--r--source/blender/blenkernel/intern/object.c2
2 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index bf6f7a5f22c..39bcf519f95 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -1421,6 +1421,15 @@ void id_clear_lib_data(Main *bmain, ID *id)
if (ntree) {
ntree->id.lib = NULL;
}
+
+ if (GS(id->name) == ID_OB) {
+ Object *object = (Object*)id;
+ if (object->proxy_from != NULL) {
+ object->proxy_from->proxy = NULL;
+ object->proxy_from->proxy_group = NULL;
+ }
+ object->proxy = object->proxy_from = object->proxy_group = NULL;
+ }
}
/* next to indirect usage in read/writefile also in editobject.c scene.c */
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index a11f83876a4..647aadf237c 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1609,7 +1609,7 @@ void BKE_object_make_local(Object *ob)
if (ob->id.lib == NULL) return;
- ob->proxy = ob->proxy_from = NULL;
+ ob->proxy = ob->proxy_from = ob->proxy_group = NULL;
if (ob->id.us == 1) {
id_clear_lib_data(bmain, &ob->id);