[Bf-blender-cvs] [b21bd431e3a] master: Fix T60378: All armatures reset positions on linked collection when ctrl+z used on anything.

Bastien Montagne noreply at git.blender.org
Wed Jan 30 20:34:50 CET 2019


Commit: b21bd431e3a50c79d9db549254141fe7ffa311a7
Author: Bastien Montagne
Date:   Wed Jan 30 20:32:28 2019 +0100
Branches: master
https://developer.blender.org/rBb21bd431e3a50c79d9db549254141fe7ffa311a7

Fix T60378: All armatures reset positions on linked collection when ctrl+z used on anything.

Issue actually exists since ages, probably 2.7x update system forced all
armature proxies to be fully refreshed after an undo?

In any case, proxy_from should only be reset for 'local' proxies (i.e.
directly linked datablocks), not for linked proxies...

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

M	source/blender/blenloader/intern/readfile.c

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

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 42f3c35034e..aaa7ea6da8c 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -1573,14 +1573,17 @@ static void change_idid_adr(ListBase *mainlist, FileData *basefd, void *old, voi
 /* lib linked proxy objects point to our local data, we need
  * to clear that pointer before reading the undo memfile since
  * the object might be removed, it is set again in reading
- * if the local object still exists */
+ * if the local object still exists.
+ * This is only valid for local proxy objects though, linked ones should not be affected here.
+ */
 void blo_clear_proxy_pointers_from_lib(Main *oldmain)
 {
 	Object *ob = oldmain->object.first;
 
 	for (; ob; ob = ob->id.next) {
-		if (ob->id.lib)
+		if (ob->id.lib != NULL && ob->proxy_from != NULL && ob->proxy_from->id.lib == NULL) {
 			ob->proxy_from = NULL;
+		}
 	}
 }



More information about the Bf-blender-cvs mailing list