Fix T92847: Meta-strip corrupt

Offsets for meta strip were invalid. No steps to reproduce the issue are
available, but it is quite possible that there are files with incorrect
state after issues with meta strips were fixed.

Ensure correct offsets for meta strips in versioning code.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D13257
This commit is contained in:
Richard Antalik 2021-11-19 06:10:26 +01:00
parent fd2a155d06
commit 4d09a692e2
Notes: blender-bot 2023-02-14 06:00:47 +01:00
Referenced by commit 4ea6b4ba84, Fix crash in VSE versioning code from recent commit
Referenced by issue #92847, Meta-strip corrupt
1 changed files with 19 additions and 0 deletions

View File

@ -68,6 +68,7 @@
#include "SEQ_iterator.h"
#include "SEQ_sequencer.h"
#include "SEQ_time.h"
#include "RNA_access.h"
@ -1272,6 +1273,15 @@ static void version_geometry_nodes_set_position_node_offset(bNodeTree *ntree)
}
}
static bool version_fix_seq_meta_range(Sequence *seq, void *user_data)
{
Scene *scene = (Scene *)user_data;
if (seq->type == SEQ_TYPE_META) {
SEQ_time_update_meta_strip_range(scene, seq);
}
return true;
}
/* NOLINTNEXTLINE: readability-function-size */
void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain)
{
@ -2193,5 +2203,14 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
}
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
Editing *ed = SEQ_editing_get(scene);
/* Make sure range of meta strips is correct.
* It was possible to save .blend file with incorrect state of meta strip
* range. The root cause is expected to be fixed, but need to ensure files
* with invalid meta strip range are corrected. */
SEQ_for_each_callback(&ed->seqbase, version_fix_seq_meta_range, scene);
}
}
}