Revision: 14813
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14813
Author:   schlaile
Date:     2008-05-12 19:16:54 +0200 (Mon, 12 May 2008)

Log Message:
-----------
== Ipo ==

This fixes [#11118] Record Mouse in IPO Curve Editor 2.46rc3
and adds thereby a new feature: correct audio sync to IPO mouse recording :)

Modified Paths:
--------------
    trunk/blender/source/blender/include/BSE_drawview.h
    trunk/blender/source/blender/src/drawview.c
    trunk/blender/source/blender/src/editipo.c

Modified: trunk/blender/source/blender/include/BSE_drawview.h
===================================================================
--- trunk/blender/source/blender/include/BSE_drawview.h 2008-05-12 16:22:49 UTC 
(rev 14812)
+++ trunk/blender/source/blender/include/BSE_drawview.h 2008-05-12 17:16:54 UTC 
(rev 14813)
@@ -59,7 +59,7 @@
 void draw_depth(struct ScrArea *sa, void *spacedata);
 void view3d_update_depths(struct View3D *v3d);
 
-int update_time(void);
+int update_time(int cfra);
 void calc_viewborder(struct View3D *v3d, struct rctf *viewborder_r);
 void view3d_set_1_to_1_viewborder(struct View3D *v3d);
 

Modified: trunk/blender/source/blender/src/drawview.c
===================================================================
--- trunk/blender/source/blender/src/drawview.c 2008-05-12 16:22:49 UTC (rev 
14812)
+++ trunk/blender/source/blender/src/drawview.c 2008-05-12 17:16:54 UTC (rev 
14813)
@@ -3398,12 +3398,12 @@
 static short redrawtime_index;
 
 
-int update_time(void)
+int update_time(int cfra)
 {
        static double ltime;
        double time;
 
-       if ((audiostream_pos() != CFRA)
+       if ((audiostream_pos() != cfra)
            && (G.scene->audio.flag & AUDIO_SYNC)) {
                return 0;
        }
@@ -3641,7 +3641,7 @@
 
        /* make sure that swaptime passed by */
        tottime -= swaptime;
-       while (update_time()) {
+       while (update_time(CFRA)) {
                PIL_sleep_ms(1);
        }
        
@@ -3700,7 +3700,7 @@
 
        inner_play_prefetch_startup(mode);
 
-       update_time();
+       update_time(CFRA);
        
        inner_play_anim_loop(1, mode);  /* 1==init */
 

Modified: trunk/blender/source/blender/src/editipo.c
===================================================================
--- trunk/blender/source/blender/src/editipo.c  2008-05-12 16:22:49 UTC (rev 
14812)
+++ trunk/blender/source/blender/src/editipo.c  2008-05-12 17:16:54 UTC (rev 
14813)
@@ -116,6 +116,7 @@
 #include "BSE_headerbuttons.h"
 #include "BSE_node.h"
 #include "BSE_sequence.h"
+#include "BSE_seqaudio.h"
 #include "BSE_time.h"
 
 #include "blendef.h"
@@ -5643,7 +5644,7 @@
        if(poin) ei1->icu->curval= read_ipo_poin(poin, type);
        or1= ei1->icu->curval;
        ei1->icu->flag |= IPO_LOCK;
-       
+
        if(ei2) {
                if(ei2->icu==NULL)
                        ei2->icu= verify_ipocurve(G.sipo->from, 
G.sipo->blocktype, G.sipo->actname, G.sipo->constname, G.sipo->bonename, 
ei2->adrcode);
@@ -5671,8 +5672,9 @@
                }               
                sa= sa->next;   
        }
+
        if(sa) areawinset(sa->win);
-       
+
        /* can we? */
        while(get_mbut()&L_MOUSE) BIF_wait_for_statechange();
        data1= MEM_callocN(sizeof(float)*(EFRA-SFRA+1), "data1");
@@ -5681,14 +5683,18 @@
        getmouseco_areawin(mvalo);
        xn= mvalo[0]; yn= mvalo[1];
        waitcursor(1);
-       
+
        tottime= 0.0;
        swaptime= 1.0/FPS;
 
        cfrao= CFRA;
        cfra=efra= SFRA;
        sfra= EFRA;
-       
+
+       if (G.scene->audio.flag & AUDIO_SYNC) {
+               audiostream_start(cfra);
+       }
+
        while(afbreek==0) {
                
                getmouseco_areawin(mval);
@@ -5698,7 +5704,7 @@
                        else firsttime= 0;
 
                        set_timecursor(cfra);
-                       
+       
                        /* do ipo: first all, then the specific ones */
                        if(anim==2) {
                                do_ob_ipo(ob);
@@ -5729,7 +5735,7 @@
 
                        /* minimal wait swaptime */
                        tottime -= swaptime;
-                       while (update_time()) PIL_sleep_ms(1);
+                       while (update_time(cfra)) PIL_sleep_ms(1);
 
                        screen_swapbuffers();
                        
@@ -5739,8 +5745,18 @@
                        mvalo[1]= mval[1];
                        
                        if(anim || (G.qual & LR_CTRLKEY)) {
-                               cfra++;
-                               if(cfra>EFRA) cfra= SFRA;
+                               if (G.scene->audio.flag & AUDIO_SYNC) {
+                                       cfra = audiostream_pos();
+                               } else {
+                                       cfra++;
+                               }
+                               if(cfra>EFRA) {
+                                       cfra= SFRA;
+                                       if (G.scene->audio.flag & AUDIO_SYNC) {
+                                               audiostream_stop();
+                                               audiostream_start( cfra );
+                                       }
+                               }
                        }
                }
                
@@ -5793,6 +5809,9 @@
        editipo_changed(G.sipo, 0);
        do_ipo(G.sipo->ipo);
        waitcursor(0);
+       if (G.scene->audio.flag & AUDIO_SYNC) {
+               audiostream_stop();
+       }
 
        allqueue(REDRAWVIEW3D, 0);
        if(sa) scrarea_queue_headredraw(sa);    /* headerprint */


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to