Page MenuHome

Fix T99044: Dopesheet crash when accessing Key menu in Mask mode
ClosedPublic

Authored by Sergey Sharybin (sergey) on Nov 14 2022, 4:25 PM.

Details

Summary

The animdata_filter_mask() was not respecting the filter flag of
ANIMFILTER_FCURVESONLY which lead to cases when animation system
element is effectively cast from MaskLayer* to FCurve*.

The proposed solution more closely follows the GreasePencil filtering
makes it so when ANIMFILTER_FCURVESONLY flag is uses no mask layer
channels will be added.


The basic dopesheet seems to work the same as before, but this is one
of the areas where it is hard to predict all consequences so extra
testing will be welcome.

There is also a decision to be made whether we want it in 3.4 or,
since this is not a recently introduced bug, play it safe and only
include the fix to 3.5.

Diff Detail

Repository
rB Blender

Event Timeline

Sergey Sharybin (sergey) requested review of this revision.Nov 14 2022, 4:25 PM
Sergey Sharybin (sergey) created this revision.

Should be easy to ignore it in the review view options if it gets in a way.

Seems I've lied. Or, at a very least, I can not find such option to restrict view to a single commit only.
Please let me know if it is easier to split the cleanup commit to its own D<number> review.

Good catch.
To me, it makes perfect sense to add the ANIMFILTER_FCURVESONLY to filter out mask layers this way.

I agree that it should be tested, I don't know exactly which editors should display mask layers among : graph editor, NLA, timeline, main dopesheet ? I suppose none of them, since mask layers don't have F-curves ?
The filter is extensively used in the functions related to these editors, so I guess they are the ones that should be tested in priority.

Limit the patch to the functional part only.

This revision is now accepted and ready to land.Nov 15 2022, 5:47 PM