[Bf-blender-cvs] [01bda15] master: Fix T42472: Undoing/Redoing repeated transform operator gives wrong final matrix on objects with no geom data.

Bastien Montagne noreply at git.blender.org
Wed Dec 10 13:58:24 CET 2014


Commit: 01bda15832bf2084618fdbf242cd550f0ebbf727
Author: Bastien Montagne
Date:   Wed Dec 10 13:25:04 2014 +0100
Branches: master
https://developer.blender.org/rB01bda15832bf2084618fdbf242cd550f0ebbf727

Fix T42472: Undoing/Redoing repeated transform operator gives wrong final matrix on objects with no geom data.

This hack should not be needed here, quoting Sergey, the actual issue comes from BKE_object_handle_update_ex,
which is calling BKE_object_where_is_calc_ex when it shouldn't.

Propper fix is depsgraph refactor topic, though.

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

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

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

diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 44a0b93..566aa66 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -2357,6 +2357,15 @@ void DAG_on_visible_update(Main *bmain, const bool do_time)
 					ob->recalc |= OB_RECALC_DATA;
 					lib_id_recalc_tag(bmain, &ob->id);
 				}
+				/* This should not be needed here, but in some cases, like after a redo, we can end up with
+				 * a wrong final matrix (see T42472).
+				 * Quoting Sergey, this comes from BKE_object_handle_update_ex, which is calling
+				 * BKE_object_where_is_calc_ex when it shouldn't, but that issue is not easily fixable.
+				 */
+				else {
+					ob->recalc |= OB_RECALC_OB;
+					lib_id_recalc_tag(bmain, &ob->id);
+				}
 				if (ob->proxy && (ob->proxy_group == NULL)) {
 					ob->proxy->recalc |= OB_RECALC_DATA;
 					lib_id_recalc_tag(bmain, &ob->id);




More information about the Bf-blender-cvs mailing list