[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37299] trunk/blender/source/blender/ editors/transform/transform_conversions.c: fix for sequencer transform with effects strips where the effects could be moved to invalid times to avoid overlap but would immediately refresh back to overlapping locations after .
Campbell Barton
ideasman42 at gmail.com
Tue Jun 7 18:47:26 CEST 2011
Revision: 37299
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37299
Author: campbellbarton
Date: 2011-06-07 16:47:25 +0000 (Tue, 07 Jun 2011)
Log Message:
-----------
fix for sequencer transform with effects strips where the effects could be moved to invalid times to avoid overlap but would immediately refresh back to overlapping locations after.
Modified Paths:
--------------
trunk/blender/source/blender/editors/transform/transform_conversions.c
Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c 2011-06-07 16:08:49 UTC (rev 37298)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c 2011-06-07 16:47:25 UTC (rev 37299)
@@ -4016,6 +4016,7 @@
}
if(overlap) {
+ int has_effect= 0;
for(seq= seqbasep->first; seq; seq= seq->next)
seq->tmp= NULL;
@@ -4024,12 +4025,48 @@
for(a=0; a<t->total; a++, td++) {
seq= ((TransDataSeq *)td->extra)->seq;
if ((seq != seq_prev)) {
- /* Tag seq with a non zero value, used by shuffle_seq_time to identify the ones to shuffle */
- seq->tmp= (void*)1;
+ /* check effects strips, we cant change their time */
+ if((seq->type & SEQ_EFFECT) && seq->seq1) {
+ // shuffle_seq(seqbasep, seq, t->scene);
+ has_effect= TRUE;
+ }
+ else {
+ /* Tag seq with a non zero value, used by shuffle_seq_time to identify the ones to shuffle */
+ seq->tmp= (void*)1;
+ }
}
}
shuffle_seq_time(seqbasep, t->scene);
+
+ if(has_effect) {
+ /* update effects strips based on strips just moved in time */
+ td= t->data;
+ seq_prev= NULL;
+ for(a=0; a<t->total; a++, td++) {
+ seq= ((TransDataSeq *)td->extra)->seq;
+ if ((seq != seq_prev)) {
+ if((seq->type & SEQ_EFFECT) && seq->seq1) {
+ calc_sequence(t->scene, seq);
+ }
+ }
+ }
+
+ /* now if any effects _still_ overlap, we need to move them up */
+ td= t->data;
+ seq_prev= NULL;
+ for(a=0; a<t->total; a++, td++) {
+ seq= ((TransDataSeq *)td->extra)->seq;
+ if ((seq != seq_prev)) {
+ if((seq->type & SEQ_EFFECT) && seq->seq1) {
+ if(seq_test_overlap(seqbasep, seq)) {
+ shuffle_seq(seqbasep, seq, t->scene);
+ }
+ }
+ }
+ }
+ /* done with effects */
+ }
}
}
#endif
More information about the Bf-blender-cvs
mailing list