Commit: bb98e83b99e63348e0396a5ffe5bb2a20ff1607a
Author: Bastien Montagne
Date:   Mon Jul 23 17:38:41 2018 +0200
Branches: master
https://developer.blender.org/rBbb98e83b99e63348e0396a5ffe5bb2a20ff1607a

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...

===================================================================

M       source/blender/blenkernel/BKE_blender_version.h
M       source/blender/blenkernel/BKE_sequencer.h
M       source/blender/blenkernel/intern/sequencer.c
M       source/blender/blenloader/intern/versioning_250.c
M       source/blender/blenloader/intern/versioning_270.c
M       source/blender/editors/space_sequencer/sequencer_edit.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_blender_version.h 
b/source/blender/blenkernel/BKE_blender_version.h
index a3da6d5016e..16115203294 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -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
diff --git a/source/blender/blenkernel/BKE_sequencer.h 
b/source/blender/blenkernel/BKE_sequencer.h
index 8574e81c4e6..c408597de32 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -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 
*/
diff --git a/source/blender/blenkernel/intern/sequencer.c 
b/source/blender/blenkernel/intern/sequencer.c
index 14119998519..7e4069305f6 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -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);
                }
 
diff --git a/source/blender/blenloader/intern/versioning_250.c 
b/source/blender/blenloader/intern/versioning_250.c
index e15d0f50948..28720ef5145 100644
--- a/source/blender/blenloader/intern/versioning_250.c
+++ b/source/blender/blenloader/intern/versioning_250.c
@@ -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;
                        }
                }
diff --git a/source/blender/blenloader/intern/versioning_270.c 
b/source/blender/blenloader/intern/versioning_270.c
index 20f2a747fb2..7b787725084 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -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)
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c 
b/source/blender/editors/space_sequencer/sequencer_edit.c
index 679fb71f76b..5b8f2ae7067 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -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);
                        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to