fix for a library linking problem where a proxy object linked into a blend would cause the proxy, driver's ID to be directly linked as well.

eg. character.blend -> anim.blend -> comp.blend
... Would link the character.blend directly into comp.blend because on driver ID's.

In this case id_lib_extern doenst need to be called because the object its linked from is a library.
This commit is contained in:
Campbell Barton 2010-04-25 00:19:10 +00:00
parent d0328d6702
commit 2cec60e2eb
2 changed files with 12 additions and 6 deletions

@ -1469,11 +1469,17 @@ void object_copy_proxy_drivers(Object *ob, Object *target)
/* all drivers */
DRIVER_TARGETS_LOOPER(dvar)
{
if(dtar->id) {
if ((Object *)dtar->id == target)
dtar->id= (ID *)ob;
else
else {
/* only on local objects because this causes indirect links a -> b -> c,blend to point directly to a.blend
* when a.blend has a proxy thats linked into c.blend */
if(ob->id.lib==NULL)
id_lib_extern((ID *)dtar->id);
}
}
}
DRIVER_TARGETS_LOOPER_END
}
}

@ -205,8 +205,8 @@ typedef struct PreviewImage {
#define LIB_EXTERN 1
#define LIB_INDIRECT 2
#define LIB_TEST 8
#define LIB_TESTEXT 9
#define LIB_TESTIND 10
#define LIB_TESTEXT (LIB_TEST | LIB_EXTERN)
#define LIB_TESTIND (LIB_TEST | LIB_INDIRECT)
#define LIB_READ 16
#define LIB_NEEDLINK 32