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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to