[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25411] trunk/blender/source/blender: have sequence strip rna not depend on the current editing sequencer context (TODO- rename)

Campbell Barton ideasman42 at gmail.com
Wed Dec 16 17:35:31 CET 2009


Revision: 25411
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25411
Author:   campbellbarton
Date:     2009-12-16 17:35:31 +0100 (Wed, 16 Dec 2009)

Log Message:
-----------
have sequence strip rna not depend on the current editing sequencer context (TODO- rename)

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/makesrna/intern/rna_sequencer.c

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2009-12-16 13:27:30 UTC (rev 25410)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2009-12-16 16:35:31 UTC (rev 25411)
@@ -60,17 +60,17 @@
 void seq_end(SeqIterator *iter);
 void seq_array(struct Editing *ed, struct Sequence ***seqarray, int *tot, int use_pointer);
 
-#define SEQP_BEGIN(ed, seq) \
+#define SEQP_BEGIN(ed, _seq) \
 { \
 	SeqIterator iter;\
 		for(seq_begin(ed, &iter, 1); iter.valid; seq_next(&iter)) { \
-			seq= iter.seq;
+			_seq= iter.seq;
 			
-#define SEQ_BEGIN(ed, seq) \
+#define SEQ_BEGIN(ed, _seq) \
 	{ \
 		SeqIterator iter;\
 		for(seq_begin(ed, &iter, 0); iter.valid; seq_next(&iter)) { \
-			seq= iter.seq;
+			_seq= iter.seq;
 
 #define SEQ_END \
 		} \
@@ -181,6 +181,7 @@
 int seq_single_check(struct Sequence *seq);
 void seq_single_fix(struct Sequence *seq);
 int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test);
+struct ListBase *seq_seqbase(struct ListBase *seqbase, struct Sequence *seq);
 void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs);
 int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test);
 int shuffle_seq_time(ListBase * seqbasep);

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2009-12-16 13:27:30 UTC (rev 25410)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2009-12-16 16:35:31 UTC (rev 25411)
@@ -3532,7 +3532,24 @@
 	}
 }
 
+/* in cases where we done know the sequence's listbase */
+ListBase *seq_seqbase(ListBase *seqbase, Sequence *seq)
+{
+	Sequence *iseq;
+	ListBase *lb= NULL;
 
+	for(iseq= seqbase->first; iseq; iseq= iseq->next) {
+		if(seq==iseq) {
+			return seqbase;
+		}
+		else if(iseq->seqbase.first && (lb= seq_seqbase(&iseq->seqbase, seq))) {
+			return lb;
+		}
+	}
+
+	return NULL;
+}
+
 /* XXX - hackish function needed for transforming strips! TODO - have some better solution */
 void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs)
 {

Modified: trunk/blender/source/blender/makesrna/intern/rna_sequencer.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_sequencer.c	2009-12-16 13:27:30 UTC (rev 25410)
+++ trunk/blender/source/blender/makesrna/intern/rna_sequencer.c	2009-12-16 16:35:31 UTC (rev 25411)
@@ -92,11 +92,11 @@
 static void rna_Sequence_frame_change_update(Scene *scene, Sequence *seq)
 {
 	Editing *ed= seq_give_editing(scene, FALSE);
-
+	ListBase *seqbase= seq_seqbase(&ed->seqbase, seq);
 	calc_sequence_disp(seq);
 
-	if( seq_test_overlap(ed->seqbasep, seq) ) {
-		shuffle_seq(ed->seqbasep, seq);
+	if(seq_test_overlap(seqbase, seq)) {
+		shuffle_seq(seqbase, seq);
 	}
 	sort_seq(scene);
 }
@@ -150,11 +150,12 @@
 	Sequence *seq= (Sequence*)ptr->data;
 	Scene *scene= (Scene*)ptr->id.data;
 	Editing *ed= seq_give_editing(scene, FALSE);
-	
+	ListBase *seqbase= seq_seqbase(&ed->seqbase, seq);
+
 	seq->machine= value;
 	
-	if( seq_test_overlap(ed->seqbasep, seq) ) {
-		shuffle_seq(ed->seqbasep, seq);
+	if( seq_test_overlap(seqbase, seq) ) {
+		shuffle_seq(seqbase, seq);
 	}
 	sort_seq(scene);
 }
@@ -234,9 +235,22 @@
 static void rna_Sequence_name_set(PointerRNA *ptr, const char *value)
 {
 	Scene *scene= (Scene*)ptr->id.data;
+	Editing *ed= seq_give_editing(scene, FALSE);
 	Sequence *seq= (Sequence*)ptr->data;
+	Sequence *iseq;
 	BLI_strncpy(seq->name+2, value, sizeof(seq->name)-2);
+
 	seqUniqueName(&scene->ed->seqbase, seq);
+
+	// TODO, unique name for all meta's
+	/*
+	SEQ_BEGIN(ed, iseq) {
+		if(iseq->seqbase.first)
+			seqUniqueName(&iseq->seqbase, seq);
+
+	}
+	SEQ_END
+	*/
 }
 
 static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr)





More information about the Bf-blender-cvs mailing list