[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23941] trunk/blender/source/blender/ editors/transform/transform_conversions.c: fix for bug where moving strips that are next to eachother would detect invalid overlaps
Campbell Barton
ideasman42 at gmail.com
Mon Oct 19 12:37:50 CEST 2009
Revision: 23941
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23941
Author: campbellbarton
Date: 2009-10-19 12:37:50 +0200 (Mon, 19 Oct 2009)
Log Message:
-----------
fix for bug where moving strips that are next to eachother would detect invalid overlaps
first update strips, then check overlap in a second loop
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 2009-10-19 10:10:05 UTC (rev 23940)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c 2009-10-19 10:37:50 UTC (rev 23941)
@@ -2325,8 +2325,8 @@
{
ListBase *seqbasep= seq_give_editing(t->scene, FALSE)->seqbasep; /* Editing null check alredy done */
int a, new_frame;
- TransData *td= t->data;
- TransData2D *td2d= t->data2d;
+ TransData *td= NULL;
+ TransData2D *td2d= NULL;
TransDataSeq *tdsq= NULL;
Sequence *seq;
@@ -2338,7 +2338,7 @@
Sequence *seq_prev= NULL;
/* flush to 2d vector from internally used 3d vector */
- for(a=0; a<t->total; a++, td++, td2d++) {
+ for(a=0, td= t->data, td2d= t->data2d; a<t->total; a++, td++, td2d++) {
tdsq= (TransDataSeq *)td->extra;
seq= tdsq->seq;
@@ -2372,16 +2372,30 @@
* children are ALWAYS transformed first
* so we dont need to do this in another loop. */
calc_sequence(seq);
+ }
+ else {
+ calc_sequence_disp(seq);
+ }
+ }
+ seq_prev= seq;
+ }
+ /* need to do the overlap check in a new loop otherwise adjacent strips
+ * will not be updated and we'll get false positives */
+ seq_prev= NULL;
+ for(a=0, td= t->data, td2d= t->data2d; a<t->total; a++, td++, td2d++) {
+
+ tdsq= (TransDataSeq *)td->extra;
+ seq= tdsq->seq;
+
+ if (seq != seq_prev) {
+ if(seq->depth==0) {
/* test overlap, displayes red outline */
seq->flag &= ~SEQ_OVERLAP;
if( seq_test_overlap(seqbasep, seq) ) {
seq->flag |= SEQ_OVERLAP;
}
}
- else {
- calc_sequence_disp(seq);
- }
}
seq_prev= seq;
}
More information about the Bf-blender-cvs
mailing list