== Sequencer ==
authorPeter Schlaile <peter@schlaile.de>
Sun, 23 Dec 2007 21:27:12 +0000 (21:27 +0000)
committerPeter Schlaile <peter@schlaile.de>
Sun, 23 Dec 2007 21:27:12 +0000 (21:27 +0000)
Fixed IPO calculation for threaded prefetch rendering. (do_seq_ipo used
global CFRA tststs...)

source/blender/blenkernel/BKE_ipo.h
source/blender/blenkernel/intern/ipo.c
source/blender/src/seqaudio.c
source/blender/src/sequence.c

index 2a6065eb4f169a70551656491874133dd78a25ed..01fe0903775a997cdc42f6a01ac5ee1616a42c5c 100644 (file)
@@ -95,7 +95,7 @@ void do_ipo_nocalc(struct Ipo *ipo);
 void do_ipo(struct Ipo *ipo);
 void do_mat_ipo(struct Material *ma);
 void do_ob_ipo(struct Object *ob);
-void do_seq_ipo(struct Sequence *seq);
+void do_seq_ipo(struct Sequence *seq, int cfra);
 void do_ob_ipodrivers(struct Object *ob, struct Ipo *ipo, float ctime);
 
 int has_ipo_code(struct Ipo *ipo, int code);
index 876f1c50a93a5ba11713d5092105cde8d5f059e8..4af310913d65b97d4677a8b5a6daad4f6be54546 100644 (file)
@@ -2161,7 +2161,7 @@ void do_ob_ipodrivers(Object *ob, Ipo *ipo, float ctime)
        }
 }
 
-void do_seq_ipo(Sequence *seq)
+void do_seq_ipo(Sequence *seq, int cfra)
 {
        float ctime, div;
        
@@ -2169,11 +2169,10 @@ void do_seq_ipo(Sequence *seq)
        
        if(seq->ipo) {
                if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) {
-                       ctime = frame_to_float(G.scene->r.cfra);
+                       ctime = frame_to_float(cfra);
                        div = 1.0;
                } else {
-                       ctime= frame_to_float(G.scene->r.cfra 
-                                             - seq->startdisp);
+                       ctime= frame_to_float(cfra - seq->startdisp);
                        div= (seq->enddisp - seq->startdisp)/100.0f;
                        if(div==0.0) return;
                }
@@ -2291,7 +2290,7 @@ void do_all_data_ipos()
                             || seq->type == SEQ_HD_SOUND) && (seq->ipo) && 
                                (seq->startdisp<=G.scene->r.cfra+2) && 
                            (seq->enddisp>G.scene->r.cfra)) 
-                                       do_seq_ipo(seq);
+                                       do_seq_ipo(seq, G.scene->r.cfra);
                        seq= seq->next;
                }
        }
index b4d4f190f91f1361be921f6f4bdfda352bef66b3..ae76de90ddf5abd182ae9c38055ed9d797843f73 100644 (file)
@@ -304,7 +304,7 @@ static void audio_fill_ram_sound(Sequence *seq, void * mixdown,
            (seq->startdisp <= CFRA) && ((seq->enddisp) > CFRA))
        {
                if(seq->ipo && seq->ipo->curve.first) {
-                       do_seq_ipo(seq);
+                       do_seq_ipo(seq, CFRA);
                        facf = seq->facf0;
                } else {
                        facf = 1.0;
@@ -333,7 +333,7 @@ static void audio_fill_hd_sound(Sequence *seq,
            (seq->startdisp <= CFRA) && ((seq->enddisp) > CFRA))
        {
                if(seq->ipo && seq->ipo->curve.first) {
-                       do_seq_ipo(seq);
+                       do_seq_ipo(seq, CFRA);
                        facf = seq->facf0; 
                } else {
                        facf = 1.0;
index 73eb0a967642a0efa7c36c8d0634d8359cc80146..6d663b610caf22f6916570078887ca1551ab4f25 100644 (file)
@@ -446,7 +446,7 @@ static void do_effect(int cfra, Sequence *seq, TStripElem *se)
        }
 
        if(seq->ipo && seq->ipo->curve.first) {
-               do_seq_ipo(seq);
+               do_seq_ipo(seq, cfra);
                fac= seq->facf0;
                facf= seq->facf1;
        } else {
@@ -962,7 +962,7 @@ static void do_effect_seq_recursively(Sequence * seq, TStripElem *se, int cfra)
        se->se3 = 0;
 
        if(seq->ipo && seq->ipo->curve.first) {
-               do_seq_ipo(seq);
+               do_seq_ipo(seq, cfra);
                fac= seq->facf0;
                facf= seq->facf1;
        } else {