[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60345] trunk/blender/source/blender/ blenkernel/intern: Fix #36793: missing update on undo with proxy object that is not using a proxy group.

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Sep 23 23:55:57 CEST 2013


Revision: 60345
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60345
Author:   blendix
Date:     2013-09-23 21:55:56 +0000 (Mon, 23 Sep 2013)
Log Message:
-----------
Fix #36793: missing update on undo with proxy object that is not using a proxy group.

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

Modified: trunk/blender/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/depsgraph.c	2013-09-23 21:20:04 UTC (rev 60344)
+++ trunk/blender/source/blender/blenkernel/intern/depsgraph.c	2013-09-23 21:55:56 UTC (rev 60345)
@@ -2115,6 +2115,8 @@
 			if ((oblay & lay) & ~scene->lay_updated) {
 				if (ELEM6(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL, OB_LATTICE))
 					ob->recalc |= OB_RECALC_DATA;
+				if (ob->proxy && (ob->proxy_group == NULL))
+					ob->proxy->recalc |= OB_RECALC_DATA;
 				if (ob->dup_group) 
 					dag_group_on_visible_update(ob->dup_group);
 			}

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2013-09-23 21:20:04 UTC (rev 60344)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2013-09-23 21:55:56 UTC (rev 60345)
@@ -2835,21 +2835,20 @@
 			/* quick cache removed */
 		}
 
-		/* the no-group proxy case, we call update */
-		if (ob->proxy && ob->proxy_group == NULL) {
-			/* set pointer in library proxy target, for copying, but restore it */
-			ob->proxy->proxy_from = ob;
-			// printf("call update, lib ob %s proxy %s\n", ob->proxy->id.name, ob->id.name);
-			BKE_object_handle_update(scene, ob->proxy);
-		}
-	
 		ob->recalc &= ~OB_RECALC_ALL;
 	}
 
 	/* the case when this is a group proxy, object_update is called in group.c */
 	if (ob->proxy) {
+		/* set pointer in library proxy target, for copying, but restore it */
 		ob->proxy->proxy_from = ob;
 		// printf("set proxy pointer for later group stuff %s\n", ob->id.name);
+
+		/* the no-group proxy case, we call update */
+		if (ob->proxy_group == NULL) {
+			// printf("call update, lib ob %s proxy %s\n", ob->proxy->id.name, ob->id.name);
+			BKE_object_handle_update(scene, ob->proxy);
+		}
 	}
 }
 /* WARNING: "scene" here may not be the scene object actually resides in. 




More information about the Bf-blender-cvs mailing list