[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25750] trunk/blender/source/blender/ blenkernel/intern/armature.c: sanity check that prevents crashing when syncing poses,

Campbell Barton ideasman42 at gmail.com
Tue Jan 5 20:34:21 CET 2010


Revision: 25750
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25750
Author:   campbellbarton
Date:     2010-01-05 20:34:19 +0100 (Tue, 05 Jan 2010)

Log Message:
-----------
sanity check that prevents crashing when syncing poses,
attempted to do a partial sync with pose mode however this seems not easy at all since connected data gets lost, parents are invalid etc.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/armature.c

Modified: trunk/blender/source/blender/blenkernel/intern/armature.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/armature.c	2010-01-05 19:22:48 UTC (rev 25749)
+++ trunk/blender/source/blender/blenkernel/intern/armature.c	2010-01-05 19:34:19 UTC (rev 25750)
@@ -1480,8 +1480,23 @@
 	bPose *pose= ob->pose, *frompose= from->pose;
 	bPoseChannel *pchan, *pchanp, pchanw;
 	bConstraint *con;
+	int error = 0;
 	
 	if (frompose==NULL) return;
+
+	/* in some cases when rigs change, we cant synchronize
+	 * to avoid crashing check for possible errors here */
+	for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) {
+		if (pchan->bone->layer & layer_protected) {
+			if(get_pose_channel(frompose, pchan->name) == NULL) {
+				printf("failed to sync proxy armature because '%s' is missing pose channel '%s'\n", from->id.name, pchan->name);
+				error = 1;
+			}
+		}
+	}
+
+	if(error)
+		return;
 	
 	/* exception, armature local layer should be proxied too */
 	if (pose->proxy_layer)





More information about the Bf-blender-cvs mailing list