Blender Git Loki
Git Commits -> Revision c7a84c2
Revision c7a84c2 by Alexander Gavrilov (master) October 16, 2018, 16:27 (GMT) |
Dope Sheet: rewrite computation of keyframe hold blocks. Computation of hold blocks was done by storing ranges (with start and an end, and likely overlapping) in a tree keyed only by the block start. This cannot work well, and there even were comments that it is not reliable in complex cases. A much better way to deal with it is to split all ranges so they don't overlap. The most thorough way of doing this is to split at all and every known keyframe, and in this case the data can actually be stored in the key column data structures, avoiding the need for a second tree. In practice, splitting requires a pass to copy this data to newly added keys, and the necessity to loop over all keyframes in the range being added. Both are linear and don't add excess algorithmic complexity. The new implementation also calls BLI_dlrbTree_linkedlist_sync for its own needs, so the users of the *_to_keylist functions don't have to do it themselves anymore. Differential Revision: https://developer.blender.org/D3790 |
Commit Details:
Full Hash: c7a84c23f11cfccfeacf7ccfdbe7eca967c9b4ed
Parent Commit: bd24ee8
Lines Changed: +244, -380
9 Modified Paths:
/source/blender/blenkernel/intern/anim.c (+4, -6) (Diff)
/source/blender/editors/animation/anim_draw.c (+2, -5) (Diff)
/source/blender/editors/animation/keyframes_draw.c (+164, -262) (Diff)
/source/blender/editors/armature/pose_lib.c (+1, -2) (Diff)
/source/blender/editors/armature/pose_slide.c (+33, -54) (Diff)
/source/blender/editors/include/ED_keyframes_draw.h (+31, -38) (Diff)
/source/blender/editors/screen/screen_ops.c (+2, -5) (Diff)
/source/blender/editors/space_action/action_select.c (+6, -6) (Diff)
/source/blender/editors/space_nla/nla_draw.c (+1, -2) (Diff)
/source/blender/editors/animation/anim_draw.c (+2, -5) (Diff)
/source/blender/editors/animation/keyframes_draw.c (+164, -262) (Diff)
/source/blender/editors/armature/pose_lib.c (+1, -2) (Diff)
/source/blender/editors/armature/pose_slide.c (+33, -54) (Diff)
/source/blender/editors/include/ED_keyframes_draw.h (+31, -38) (Diff)
/source/blender/editors/screen/screen_ops.c (+2, -5) (Diff)
/source/blender/editors/space_action/action_select.c (+6, -6) (Diff)
/source/blender/editors/space_nla/nla_draw.c (+1, -2) (Diff)