Bugfix #24535: File saved with NLA Strip in Tweakmode crashes on reload
Now the active strip doesn't just get cleared on fileload, but is relinked properly. I had originally intended that files shouldn't be able to be saved with NLA data still in Tweakmode, but this turns out to be a bit more troublesome to get working as that would make undo keep popping out of this mode too. Also reverting 32743 (bugfix for 24418), which was a hack around this.
This commit is contained in:
@@ -1641,11 +1641,6 @@ static void animsys_evaluate_nla (PointerRNA *ptr, AnimData *adt, float ctime)
|
||||
|
||||
if ((nlt) && !(adt->flag & ADT_NLA_EDIT_NOMAP)) {
|
||||
/* edit active action in-place according to its active strip, so copy the data */
|
||||
|
||||
/* this is cleared on undo */
|
||||
if(adt->actstrip == NULL) {
|
||||
adt->actstrip= BKE_nlastrip_find_active(nlt);
|
||||
}
|
||||
memcpy(&dummy_strip, adt->actstrip, sizeof(NlaStrip));
|
||||
dummy_strip.next = dummy_strip.prev = NULL;
|
||||
}
|
||||
|
||||
@@ -1976,9 +1976,13 @@ static void direct_link_animdata(FileData *fd, AnimData *adt)
|
||||
link_list(fd, &adt->nla_tracks);
|
||||
direct_link_nladata(fd, &adt->nla_tracks);
|
||||
|
||||
/* clear temp pointers that may have been set... */
|
||||
// TODO: it's probably only a small cost to reload this anyway...
|
||||
adt->actstrip= NULL;
|
||||
/* relink active strip - even though strictly speaking this should only be used
|
||||
* if we're in 'tweaking mode', we need to be able to have this loaded back for
|
||||
* undo, but also since users may not exit tweakmode before saving (#24535)
|
||||
*/
|
||||
// TODO: it's not really nice that anyone should be able to save the file in this
|
||||
// state, but it's going to be too hard to enforce this single case...
|
||||
adt->actstrip= newdataadr(fd, adt->actstrip);
|
||||
}
|
||||
|
||||
/* ************ READ MOTION PATHS *************** */
|
||||
|
||||
Reference in New Issue
Block a user