Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2005-05-19 23:58:53 +0400
committerTon Roosendaal <ton@blender.org>2005-05-19 23:58:53 +0400
commit3fb7442d35e6c8a36f3aaebc7a9175a3b77b5251 (patch)
treeb4cce502420d462013bb5df947e15187789de69c
parentdee5af12e3327dd2dcd80eaef15c44756eb42315 (diff)
Made TimeLine "Play" also play sound and synchronize with it. Added the
feature with a header button. Works like audio playback on ALT+A, meaning you have to add the audio strips in Sequencer. The 'only sync' option for ALT+A doesn't work here. Also: fixed crash on ESC in audio playback in sequencer.
-rw-r--r--source/blender/include/BSE_headerbuttons.h2
-rw-r--r--source/blender/makesdna/DNA_space_types.h1
-rw-r--r--source/blender/src/drawview.c14
-rw-r--r--source/blender/src/editscreen.c21
-rw-r--r--source/blender/src/edittime.c2
-rw-r--r--source/blender/src/header_time.c12
-rw-r--r--source/blender/src/headerbuttons.c6
7 files changed, 44 insertions, 14 deletions
diff --git a/source/blender/include/BSE_headerbuttons.h b/source/blender/include/BSE_headerbuttons.h
index 0e4c9440c08..a34ed7821f9 100644
--- a/source/blender/include/BSE_headerbuttons.h
+++ b/source/blender/include/BSE_headerbuttons.h
@@ -56,7 +56,7 @@ void load_sound_buttons(char *str);
/* end of declarations moved from old headerbuttons.c */
void update_for_newframe_muted(void);
-void update_for_newframe_nodraw(void);
+void update_for_newframe_nodraw(int nosound);
void free_matcopybuf(void);
void clear_matcopybuf(void);
void write_videoscape_fs(void);
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index c6ba84b9a41..cd9bf98776a 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -543,6 +543,7 @@ typedef struct SpaceImaSel {
#define TIME_ALL_3D_WIN 2
#define TIME_ALL_ANIM_WIN 4
#define TIME_ALL_BUTS_WIN 8
+#define TIME_WITH_SEQ_AUDIO 16
#endif
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c
index 2092293211b..4f7fd109621 100644
--- a/source/blender/src/drawview.c
+++ b/source/blender/src/drawview.c
@@ -2366,13 +2366,15 @@ int play_anim(int mode)
do_all_keys();
do_all_actions(NULL);
- /* set all objects on current frame... test_all_displists() needs it */
- base= G.scene->base.first;
- while(base) {
- if(G.vd->lay & base->lay) where_is_object(base->object);
- base= base->next;
+ if(G.vd) {
+ /* set all objects on current frame... test_all_displists() needs it */
+ base= G.scene->base.first;
+ while(base) {
+ if(G.vd->lay & base->lay) where_is_object(base->object);
+ base= base->next;
+ }
+ test_all_displists();
}
- test_all_displists();
audiostream_stop();
diff --git a/source/blender/src/editscreen.c b/source/blender/src/editscreen.c
index 3c42dd3e0e1..9383fc6cc98 100644
--- a/source/blender/src/editscreen.c
+++ b/source/blender/src/editscreen.c
@@ -92,6 +92,7 @@
#include "BSE_edit.h"
#include "BSE_filesel.h"
#include "BSE_headerbuttons.h"
+#include "BSE_seqaudio.h"
#include "BSE_view.h"
#include "BPY_extern.h"
@@ -1006,9 +1007,23 @@ int has_screenhandler(bScreen *sc, short eventcode)
static void animated_screen(bScreen *sc, short val)
{
- CFRA++;
- if(CFRA > EFRA) CFRA= SFRA;
- update_for_newframe_nodraw();
+ int mute= 1;
+
+ if (U.mixbufsize && (val & TIME_WITH_SEQ_AUDIO)) {
+ mute= 0;
+ if(CFRA>=EFRA) {
+ CFRA= SFRA;
+ audiostream_stop();
+ audiostream_start( CFRA );
+ }
+ else CFRA = audiostream_pos();
+ }
+ else {
+ CFRA++;
+ if(CFRA > EFRA) CFRA= SFRA;
+ }
+
+ update_for_newframe_nodraw(mute);
if(val & TIME_ALL_3D_WIN)
allqueue(REDRAWVIEW3D, 0);
diff --git a/source/blender/src/edittime.c b/source/blender/src/edittime.c
index cce611c6d51..e19771d0fdb 100644
--- a/source/blender/src/edittime.c
+++ b/source/blender/src/edittime.c
@@ -511,7 +511,7 @@ void winqreadtimespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
{
first= 0;
CFRA= cfra;
- update_for_newframe_nodraw();
+ update_for_newframe_nodraw(1); // 1= nosound
timeline_force_draw(stime->redraws);
}
else PIL_sleep_ms(30);
diff --git a/source/blender/src/header_time.c b/source/blender/src/header_time.c
index e8d81d13619..2c7a5423abd 100644
--- a/source/blender/src/header_time.c
+++ b/source/blender/src/header_time.c
@@ -62,9 +62,11 @@
#include "BSE_editipo.h"
#include "BSE_filesel.h"
#include "BSE_headerbuttons.h"
+#include "BSE_seqaudio.h"
#include "BSE_time.h"
#include "blendef.h"
+#include "butspace.h"
#include "mydevice.h"
void do_time_buttons(ScrArea *sa, unsigned short event)
@@ -79,10 +81,16 @@ void do_time_buttons(ScrArea *sa, unsigned short event)
break;
case B_TL_PLAY:
add_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM, stime->redraws);
+ if(stime->redraws & TIME_WITH_SEQ_AUDIO)
+ audiostream_start( CFRA );
+
break;
case B_TL_STOP:
rem_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM);
+ if(stime->redraws & TIME_WITH_SEQ_AUDIO)
+ audiostream_stop();
allqueue(REDRAWALL, 0);
+
break;
case B_TL_FF:
/* end frame */
@@ -325,6 +333,7 @@ static uiBlock *time_framemenu(void *arg_unused)
void time_buttons(ScrArea *sa)
{
+ SpaceTime *stime= sa->spacedata.first;
uiBlock *block;
short xco, xmax;
char name[256];
@@ -436,6 +445,9 @@ void time_buttons(ScrArea *sa)
xco+= XIC+16;
+ uiDefIconButBitI(block, TOG, TIME_WITH_SEQ_AUDIO, B_DIFF, ICON_SPEAKER,
+ xco, 0, XIC, YIC, &(stime->redraws), 0, 0, 0, 0, "Play back and sync with audio from Sequence Editor");
+
/* always as last */
sa->headbutlen= xco+2*XIC;
diff --git a/source/blender/src/headerbuttons.c b/source/blender/src/headerbuttons.c
index bc098232540..538bd7541f5 100644
--- a/source/blender/src/headerbuttons.c
+++ b/source/blender/src/headerbuttons.c
@@ -548,10 +548,10 @@ void update_for_newframe_muted(void)
do_update_for_newframe(1, 1);
}
-
-void update_for_newframe_nodraw(void)
+/* used by new animated UI playback */
+void update_for_newframe_nodraw(int nosound)
{
- do_update_for_newframe(1, 0);
+ do_update_for_newframe(nosound, 0);
}