[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