[Bf-blender-cvs] [13ca11ac52a] master: VSE: Unify sequences collections API

Richard Antalik noreply at git.blender.org
Wed Dec 2 05:52:53 CET 2020


Commit: 13ca11ac52a851d1a2ef252335f7a19d36223506
Author: Richard Antalik
Date:   Wed Dec 2 05:51:22 2020 +0100
Branches: master
https://developer.blender.org/rB13ca11ac52a851d1a2ef252335f7a19d36223506

VSE: Unify sequences collections API

Use RNA_api_sequences() for SequenceEditor and MetaSequence
sequences member.

Defines pair of dispatch functions rna_Sequences_editing_* and
rna_Sequences_meta_* that pass pointer to seqbase to
rna_Sequences_* function.

Downside of this implementation is, that it defines 2 seemingly
different RNA collections - SequencesMeta and SequencesTopLevel

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D9601

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

M	source/blender/makesrna/intern/rna_internal.h
M	source/blender/makesrna/intern/rna_sequencer.c
M	source/blender/makesrna/intern/rna_sequencer_api.c

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

diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h
index 2e24461d332..76ab222e629 100644
--- a/source/blender/makesrna/intern/rna_internal.h
+++ b/source/blender/makesrna/intern/rna_internal.h
@@ -421,7 +421,7 @@ void RNA_api_space_node(struct StructRNA *srna);
 void RNA_api_space_text(struct StructRNA *srna);
 void RNA_api_region_view3d(struct StructRNA *srna);
 void RNA_api_texture(struct StructRNA *srna);
-void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop);
+void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastrip);
 void RNA_api_sequence_elements(BlenderRNA *brna, PropertyRNA *cprop);
 void RNA_api_sound(struct StructRNA *srna);
 void RNA_api_vfont(struct StructRNA *srna);
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c
index 2ffb9612486..ac45cd5c5ff 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -1967,7 +1967,7 @@ static void rna_def_editor(BlenderRNA *brna)
   RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL);
   RNA_def_property_struct_type(prop, "Sequence");
   RNA_def_property_ui_text(prop, "Sequences", "Top-level strips only");
-  RNA_api_sequences(brna, prop);
+  RNA_api_sequences(brna, prop, false);
 
   prop = RNA_def_property(srna, "sequences_all", PROP_COLLECTION, PROP_NONE);
   RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL);
@@ -2339,7 +2339,8 @@ static void rna_def_meta(BlenderRNA *brna)
   prop = RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE);
   RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL);
   RNA_def_property_struct_type(prop, "Sequence");
-  RNA_def_property_ui_text(prop, "Sequences", "");
+  RNA_def_property_ui_text(prop, "Sequences", "Sequences nested in meta strip");
+  RNA_api_sequences(brna, prop, true);
 
   rna_def_filter_video(srna);
   rna_def_proxy(srna);
diff --git a/source/blender/makesrna/intern/rna_sequencer_api.c b/source/blender/makesrna/intern/rna_sequencer_api.c
index 5419fc4ac7c..5d17beba901 100644
--- a/source/blender/makesrna/intern/rna_sequencer_api.c
+++ b/source/blender/makesrna/intern/rna_sequencer_api.c
@@ -77,15 +77,15 @@ static void rna_Sequence_swap_internal(Sequence *seq_self,
 }
 
 static Sequence *alloc_generic_sequence(
-    Editing *ed, const char *name, int frame_start, int channel, int type, const char *file)
+    ListBase *seqbase, const char *name, int frame_start, int channel, int type, const char *file)
 {
   Sequence *seq;
   StripElem *se;
 
-  seq = BKE_sequence_alloc(ed->seqbasep, frame_start, channel, type);
+  seq = BKE_sequence_alloc(seqbase, frame_start, channel, type);
 
   BLI_strncpy(seq->name + 2, name, sizeof(seq->name) - 2);
-  BKE_sequence_base_unique_name_recursive(&ed->seqbase, seq);
+  BKE_sequence_base_unique_name_recursive(seqbase, seq);
 
   Strip *strip = seq->strip;
 
@@ -105,7 +105,7 @@ static Sequence *alloc_generic_sequence(
 }
 
 static Sequence *rna_Sequences_new_clip(ID *id,
-                                        Editing *ed,
+                                        ListBase *seqbase,
                                         Main *bmain,
                                         const char *name,
                                         MovieClip *clip,
@@ -115,7 +115,8 @@ static Sequence *rna_Sequences_new_clip(ID *id,
   Scene *scene = (Scene *)id;
   Sequence *seq;
 
-  seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_MOVIECLIP, clip->filepath);
+  seq = alloc_generic_sequence(
+      seqbase, name, frame_start, channel, SEQ_TYPE_MOVIECLIP, clip->filepath);
   seq->clip = clip;
   seq->len = BKE_movieclip_get_duration(clip);
   id_us_plus((ID *)clip);
@@ -129,13 +130,40 @@ static Sequence *rna_Sequences_new_clip(ID *id,
   return seq;
 }
 
-static Sequence *rna_Sequences_new_mask(
-    ID *id, Editing *ed, Main *bmain, const char *name, Mask *mask, int channel, int frame_start)
+static Sequence *rna_Sequences_editing_new_clip(ID *id,
+                                                Editing *ed,
+                                                Main *bmain,
+                                                const char *name,
+                                                MovieClip *clip,
+                                                int channel,
+                                                int frame_start)
+{
+  return rna_Sequences_new_clip(id, &ed->seqbase, bmain, name, clip, channel, frame_start);
+}
+
+static Sequence *rna_Sequences_meta_new_clip(ID *id,
+                                             Sequence *seq,
+                                             Main *bmain,
+                                             const char *name,
+                                             MovieClip *clip,
+                                             int channel,
+                                             int frame_start)
+{
+  return rna_Sequences_new_clip(id, &seq->seqbase, bmain, name, clip, channel, frame_start);
+}
+
+static Sequence *rna_Sequences_new_mask(ID *id,
+                                        ListBase *seqbase,
+                                        Main *bmain,
+                                        const char *name,
+                                        Mask *mask,
+                                        int channel,
+                                        int frame_start)
 {
   Scene *scene = (Scene *)id;
   Sequence *seq;
 
-  seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_MASK, mask->id.name);
+  seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_MASK, mask->id.name);
   seq->mask = mask;
   seq->len = BKE_mask_get_duration(mask);
   id_us_plus((ID *)mask);
@@ -149,9 +177,20 @@ static Sequence *rna_Sequences_new_mask(
 
   return seq;
 }
+static Sequence *rna_Sequences_editing_new_mask(
+    ID *id, Editing *ed, Main *bmain, const char *name, Mask *mask, int channel, int frame_start)
+{
+  return rna_Sequences_new_mask(id, &ed->seqbase, bmain, name, mask, channel, frame_start);
+}
+
+static Sequence *rna_Sequences_meta_new_mask(
+    ID *id, Sequence *seq, Main *bmain, const char *name, Mask *mask, int channel, int frame_start)
+{
+  return rna_Sequences_new_mask(id, &seq->seqbase, bmain, name, mask, channel, frame_start);
+}
 
 static Sequence *rna_Sequences_new_scene(ID *id,
-                                         Editing *ed,
+                                         ListBase *seqbase,
                                          Main *bmain,
                                          const char *name,
                                          Scene *sce_seq,
@@ -161,7 +200,7 @@ static Sequence *rna_Sequences_new_scene(ID *id,
   Scene *scene = (Scene *)id;
   Sequence *seq;
 
-  seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_SCENE, NULL);
+  seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_SCENE, NULL);
   seq->scene = sce_seq;
   seq->len = sce_seq->r.efra - sce_seq->r.sfra + 1;
   id_us_plus((ID *)sce_seq);
@@ -176,8 +215,30 @@ static Sequence *rna_Sequences_new_scene(ID *id,
   return seq;
 }
 
+static Sequence *rna_Sequences_editing_new_scene(ID *id,
+                                                 Editing *ed,
+                                                 Main *bmain,
+                                                 const char *name,
+                                                 Scene *sce_seq,
+                                                 int channel,
+                                                 int frame_start)
+{
+  return rna_Sequences_new_scene(id, &ed->seqbase, bmain, name, sce_seq, channel, frame_start);
+}
+
+static Sequence *rna_Sequences_meta_new_scene(ID *id,
+                                              Sequence *seq,
+                                              Main *bmain,
+                                              const char *name,
+                                              Scene *sce_seq,
+                                              int channel,
+                                              int frame_start)
+{
+  return rna_Sequences_new_scene(id, &seq->seqbase, bmain, name, sce_seq, channel, frame_start);
+}
+
 static Sequence *rna_Sequences_new_image(ID *id,
-                                         Editing *ed,
+                                         ListBase *seqbase,
                                          Main *bmain,
                                          ReportList *reports,
                                          const char *name,
@@ -188,12 +249,12 @@ static Sequence *rna_Sequences_new_image(ID *id,
   Scene *scene = (Scene *)id;
   Sequence *seq;
 
-  seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_IMAGE, file);
+  seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_IMAGE, file);
   seq->len = 1;
 
   if (seq->strip->stripdata->name[0] == '\0') {
     BKE_report(reports, RPT_ERROR, "Sequences.new_image: unable to open image file");
-    BLI_remlink(&ed->seqbase, seq);
+    BLI_remlink(seqbase, seq);
     BKE_sequence_free(scene, seq, true);
     return NULL;
   }
@@ -208,14 +269,40 @@ static Sequence *rna_Sequences_new_image(ID *id,
   return seq;
 }
 
+static Sequence *rna_Sequences_editing_new_image(ID *id,
+                                                 Editing *ed,
+                                                 Main *bmain,
+                                                 ReportList *reports,
+                                                 const char *name,
+                                                 const char *file,
+                                                 int channel,
+                                                 int frame_start)
+{
+  return rna_Sequences_new_image(
+      id, &ed->seqbase, bmain, reports, name, file, channel, frame_start);
+}
+
+static Sequence *rna_Sequences_meta_new_image(ID *id,
+                                              Sequence *seq,
+                                              Main *bmain,
+                                              ReportLi

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list