[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26713] trunk/blender/source/blender/ blenkernel/intern/constraint.c: run id_lib_extern on all constraint ID data when copying.
Campbell Barton
ideasman42 at gmail.com
Mon Feb 8 18:30:37 CET 2010
Revision: 26713
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26713
Author: campbellbarton
Date: 2010-02-08 18:30:35 +0100 (Mon, 08 Feb 2010)
Log Message:
-----------
run id_lib_extern on all constraint ID data when copying. solves possible errors when running make proxy on a library object.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/constraint.c
Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/constraint.c 2010-02-08 15:37:38 UTC (rev 26712)
+++ trunk/blender/source/blender/blenkernel/intern/constraint.c 2010-02-08 17:30:35 UTC (rev 26713)
@@ -2011,14 +2011,6 @@
data->type = 20;
}
-/* only for setting the ID as extern */
-static void actcon_copy_data (bConstraint *con, bConstraint *srccon)
-{
- //bActionConstraint *src= srccon->data;
- bActionConstraint *dst= con->data;
- id_lib_extern((ID *)dst->act); /* would be better solved with something like modifiers_foreachIDLink */
-}
-
static void actcon_id_looper (bConstraint *con, ConstraintIDFunc func, void *userdata)
{
bActionConstraint *data= con->data;
@@ -2170,7 +2162,7 @@
NULL, /* free data */
actcon_relink, /* relink data */
actcon_id_looper, /* id looper */
- actcon_copy_data, /* copy data */
+ NULL, /* copy data */
actcon_new_data, /* new data */
actcon_get_tars, /* get constraint targets */
actcon_flush_tars, /* flush constraint targets */
@@ -4049,6 +4041,12 @@
/* ......... */
+static void con_extern_cb(bConstraint *con, ID **idpoin, void *userdata)
+{
+ if(idpoin && (*idpoin)->lib)
+ id_lib_extern(*idpoin);
+}
+
/* duplicate all of the constraints in a constraint stack */
void copy_constraints (ListBase *dst, const ListBase *src)
{
@@ -4067,8 +4065,15 @@
id_us_plus((ID *)con->ipo);
/* only do specific constraints if required */
- if (cti && cti->copy_data)
- cti->copy_data(con, srccon);
+ if (cti) {
+ if (cti->copy_data) {
+ cti->copy_data(con, srccon);
+ }
+
+ if(cti->id_looper) {
+ cti->id_looper(con, con_extern_cb, NULL);
+ }
+ }
}
}
More information about the Bf-blender-cvs
mailing list