[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