[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14813] trunk/blender/source/blender: == Ipo ==
Peter Schlaile
peter at schlaile.de
Mon May 12 19:16:54 CEST 2008
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 */
More information about the Bf-blender-cvs
mailing list