Fix T55668: Volume Keyframe on Cut-ted Metastrip.
We actually still had cases of Meta strip duplication resulting in non-unique strip names. Quiet surprising this went unoticed for so long. :( Fixed that bug, and think it was last one (at least, no other case of SEQ_DUPE_UNIQUE_NAME usage should be broken, I think...), and raised subversion and updated doversion to run uniquename check on strips on all previous fileversions. Note: will have to do that again when merging in 2.8...
This commit is contained in:
parent
01f5601fe5
commit
bb98e83b99
Notes:
blender-bot
2023-02-14 05:40:47 +01:00
Referenced by commit c97794520f
, Revert "Fix T55668: Volume Keyframe on Cut-ted Metastrip."
Referenced by issue #60194, Sequencer cut loses animation data for the right strip
Referenced by issue #56579, Cycles Normal Baking Incorrect Edges with Extrusion
Referenced by issue #56099, disappearing particles after first render
Referenced by issue #56090, Alembic Mesh Sequence Cache Override Frame not working using new dependency graph flag
Referenced by issue #55668, Volume Keyframe on Cut-ted Metastrip
|
@ -28,7 +28,7 @@
|
|||
* and keep comment above the defines.
|
||||
* Use STRINGIFY() rather than defining with quotes */
|
||||
#define BLENDER_VERSION 279
|
||||
#define BLENDER_SUBVERSION 5
|
||||
#define BLENDER_SUBVERSION 6
|
||||
/* Several breakages with 270, e.g. constraint deg vs rad */
|
||||
#define BLENDER_MINVERSION 270
|
||||
#define BLENDER_MINSUBVERSION 6
|
||||
|
|
|
@ -392,7 +392,7 @@ typedef struct SeqLoadInfo {
|
|||
|
||||
|
||||
/* seq_dupli' flags */
|
||||
#define SEQ_DUPE_UNIQUE_NAME (1 << 0)
|
||||
#define SEQ_DUPE_UNIQUE_NAME (1 << 0) /* WARNING: does NOT work when duplicating Meta strips! */
|
||||
#define SEQ_DUPE_CONTEXT (1 << 1)
|
||||
#define SEQ_DUPE_ANIM (1 << 2)
|
||||
#define SEQ_DUPE_ALL (1 << 3) /* otherwise only selected are copied */
|
||||
|
|
|
@ -5517,6 +5517,7 @@ static Sequence *seq_dupli(const Scene *scene_src, Scene *scene_dst, Sequence *s
|
|||
|
||||
if (scene_src == scene_dst) {
|
||||
if (dupe_flag & SEQ_DUPE_UNIQUE_NAME) {
|
||||
/* TODO this is broken in case of Meta strips recursive duplication... Not trivial to fix. */
|
||||
BKE_sequence_base_unique_name_recursive(&scene_dst->ed->seqbase, seqn);
|
||||
}
|
||||
|
||||
|
|
|
@ -633,20 +633,6 @@ static void do_version_constraints_radians_degrees_250(ListBase *lb)
|
|||
}
|
||||
}
|
||||
|
||||
/* NOTE: this version patch is intended for versions < 2.52.2, but was initially introduced in 2.27 already */
|
||||
static void do_versions_seq_unique_name_all_strips(Scene *sce, ListBase *seqbasep)
|
||||
{
|
||||
Sequence * seq = seqbasep->first;
|
||||
|
||||
while (seq) {
|
||||
BKE_sequence_base_unique_name_recursive(&sce->ed->seqbase, seq);
|
||||
if (seq->seqbase.first) {
|
||||
do_versions_seq_unique_name_all_strips(sce, &seq->seqbase);
|
||||
}
|
||||
seq = seq->next;
|
||||
}
|
||||
}
|
||||
|
||||
static void do_version_bone_roll_256(Bone *bone)
|
||||
{
|
||||
Bone *child;
|
||||
|
@ -1326,10 +1312,6 @@ void blo_do_versions_250(FileData *fd, Library *lib, Main *bmain)
|
|||
if (sce->r.mblur_samples == 0)
|
||||
sce->r.mblur_samples = sce->r.osa;
|
||||
|
||||
if (sce->ed && sce->ed->seqbase.first) {
|
||||
do_versions_seq_unique_name_all_strips(sce, &sce->ed->seqbase);
|
||||
}
|
||||
|
||||
sce = sce->id.next;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -308,6 +308,18 @@ static char *replace_bbone_easing_rnapath(char *old_path)
|
|||
}
|
||||
}
|
||||
|
||||
/* NOTE: this version patch is intended for versions < 2.52.2, but was initially introduced in 2.27 already.
|
||||
* But in 2.79 another case generating non-unique names was discovered (see T55668, involving Meta strips)... */
|
||||
static void do_versions_seq_unique_name_all_strips(Scene *sce, ListBase *seqbasep)
|
||||
{
|
||||
for (Sequence *seq = seqbasep->first; seq != NULL; seq = seq->next) {
|
||||
BKE_sequence_base_unique_name_recursive(&sce->ed->seqbase, seq);
|
||||
if (seq->seqbase.first != NULL) {
|
||||
do_versions_seq_unique_name_all_strips(sce, &seq->seqbase);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void do_version_bbone_easing_fcurve_fix(ID *UNUSED(id), FCurve *fcu, void *UNUSED(user_data))
|
||||
{
|
||||
/* F-Curve's path (for bbone_in/out) */
|
||||
|
@ -1826,6 +1838,14 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *bmain)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!MAIN_VERSION_ATLEAST(bmain, 279, 6)) {
|
||||
for (Scene *sce = bmain->scene.first; sce != NULL; sce = sce->id.next) {
|
||||
if (sce->ed != NULL && sce->ed->seqbase.first != NULL) {
|
||||
do_versions_seq_unique_name_all_strips(sce, &sce->ed->seqbase);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void do_versions_after_linking_270(Main *bmain)
|
||||
|
|
|
@ -737,7 +737,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence *seq, int cutframe)
|
|||
|
||||
if (!skip_dup) {
|
||||
/* Duplicate AFTER the first change */
|
||||
seqn = BKE_sequence_dupli_recursive(scene, scene, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM);
|
||||
seqn = BKE_sequence_dupli_recursive(scene, scene, seq, SEQ_DUPE_ANIM);
|
||||
}
|
||||
|
||||
if (seqn) {
|
||||
|
@ -846,7 +846,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence *seq, int cutframe)
|
|||
|
||||
if (!skip_dup) {
|
||||
/* Duplicate AFTER the first change */
|
||||
seqn = BKE_sequence_dupli_recursive(scene, scene, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM);
|
||||
seqn = BKE_sequence_dupli_recursive(scene, scene, seq, SEQ_DUPE_ANIM);
|
||||
}
|
||||
|
||||
if (seqn) {
|
||||
|
@ -2112,6 +2112,7 @@ static int sequencer_cut_exec(bContext *C, wmOperator *op)
|
|||
|
||||
SEQP_BEGIN (ed, seq)
|
||||
{
|
||||
BKE_sequence_base_unique_name_recursive(&ed->seqbase, seq);
|
||||
if (seq->seq1 || seq->seq2 || seq->seq3) {
|
||||
BKE_sequence_calc(scene, seq);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue