[Bf-blender-cvs] [0f88a35] master: Datablock management: remove 'proxy_from' pointer from 'is ID used' checks.

Bastien Montagne noreply at git.blender.org
Fri Oct 7 10:23:07 CEST 2016


Commit: 0f88a3546cbd020af3f5c47b049ae4ecc6bc54ba
Author: Bastien Montagne
Date:   Fri Oct 7 10:20:40 2016 +0200
Branches: master
https://developer.blender.org/rB0f88a3546cbd020af3f5c47b049ae4ecc6bc54ba

Datablock management: remove 'proxy_from' pointer from 'is ID used' checks.

Pretty much same reason as for the 'from' pointer of shapekeys - runtime
data creating loops and 'ghost' dependencies between datablocks.

We need to handle them in cases like remapping, but whall not take them
into account to check dependencies between datablocks... :/

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

M	source/blender/blenkernel/intern/library_query.c

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

diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c
index 85ddd4d..08f9c43 100644
--- a/source/blender/blenkernel/intern/library_query.c
+++ b/source/blender/blenkernel/intern/library_query.c
@@ -1036,6 +1036,10 @@ static int foreach_libblock_id_users_callback(void *user_data, ID *self_id, ID *
 	if ((GS(self_id->name) == ID_KE) && (((Key *)self_id)->from == *id_p)) {
 		return IDWALK_RET_NOP;
 	}
+	/* XXX another hack, for similar reasons as above one. */
+	if ((GS(self_id->name) == ID_OB) && (((Object *)self_id)->proxy_from == (Object *)*id_p)) {
+		return IDWALK_RET_NOP;
+	}
 
 	if (*id_p && (*id_p == iter->id)) {
 #if 0




More information about the Bf-blender-cvs mailing list