Blender Git Commit Log

Git Commits -> Revision 523de7a

Revision 523de7a by Sergey Sharybin (master)
July 26, 2019, 12:33 (GMT)
Fix T66325: Animation Keyframe Undo/Redo Bug

The issue was caused by dependency graph always ignoring animation
update when it is first time constructed. This was a way to make it
preserve unkeyed changes on undo/redo. This, however, made it so
changes of animation data itself (such as deleting/moving keyframes)
did not trigger animation update by the dependency graph.

This worked prior to copy-on-write because animation recalc flags
were stored in the DNA and never re-set on file/undo load. This was
giving dependency graph a clue that animation is to be re-evaluated
when operator explicitly asked to (more precisely, when such operator
was undone/redone).

This change makes it so original ID's recalc flags are storing
recalc flags when ID is tagged for update as an response to user
input. This way re-building dependency graph can force animation
to be updated on redo.

Tricky part here is that ID's recalc flag is no longer to be zeroed
when loading undo step (which is the same as reading .blend file).
This is something what works differently comparing to legacy
dependency graph, which was zeroing object's recalc flags there but
not animation data's recalc flags.
Shouldn't be causing issues, since unkeyed changes are not preserved
upon opening a file anyway, at least to my knowledge.

Related reports which are to be taken into account and verified
they are not re-introduced when making changes in the area:

- T63111: Auto-Bake stuck at constant re-rendering
- T54296: Cycles viewport render stuck on constant re-render

Reviewers: campbellbarton, brecht

Reviewed By: campbellbarton, brecht

Maniphest Tasks: T66325

Differential Revision: https://developer.blender.org/D5316

Commit Details:

Full Hash: 523de7ae9ba737faba76f46ee08d59a5507dc421
Parent Commit: ba94aae
Lines Changed: +59, -9

3 Modified Paths:

/source/blender/blenloader/intern/readfile.c (+12, -1) (Diff)
/source/blender/depsgraph/intern/builder/deg_builder.cc (+5, -2) (Diff)
/source/blender/depsgraph/intern/depsgraph_tag.cc (+42, -6) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021