Commit: d218f8eb8fef861b0c523ea08c166a5830106a7d
Author: Sergey Sharybin
Date:   Fri Dec 12 12:42:45 2014 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rBd218f8eb8fef861b0c523ea08c166a5830106a7d

Merge branch 'master' into depsgraph_refactor

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



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

diff --cc source/blender/blenkernel/intern/depsgraph.c
index 91eac59,566aa66..6e0847a
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@@ -2413,15 -2353,21 +2413,24 @@@ void DAG_on_visible_update(Main *bmain
                        oblay = (node) ? node->lay : ob->lay;
  
                        if ((oblay & lay) & ~scene->lay_updated) {
 -                              if (ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, 
OB_FONT, OB_MBALL, OB_LATTICE)) {
 +                              /* TODO(sergey): Why do we need armature here 
now but didn't need before? */
 +                              if (ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, 
OB_FONT, OB_MBALL, OB_LATTICE, OB_ARMATURE)) {
                                        ob->recalc |= OB_RECALC_DATA;
 +                                      DEG_id_tag_update(scene->depsgraph, 
&ob->id);
                                        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;
 +                                      DEG_id_tag_update(scene->depsgraph, 
&ob->proxy->id);
                                        lib_id_recalc_tag(bmain, &ob->id);
                                }
                                if (ob->dup_group)

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

Reply via email to