[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44093] trunk/blender/source/blender/ blenkernel/intern/sequencer.c: Fix for [#27349] Sequencer: Meta Strips plays unavailable audio
Joerg Mueller
nexyon at gmail.com
Mon Feb 13 18:31:33 CET 2012
Revision: 44093
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44093
Author: nexyon
Date: 2012-02-13 17:31:33 +0000 (Mon, 13 Feb 2012)
Log Message:
-----------
Fix for [#27349] Sequencer: Meta Strips plays unavailable audio
Hopefully at least... Sequencer code is like <insert name of random ancient language that nobody knows anymore here>.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/sequencer.c
Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c 2012-02-13 17:29:10 UTC (rev 44092)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c 2012-02-13 17:31:33 UTC (rev 44093)
@@ -523,6 +523,31 @@
}
+static void seq_update_sound_bounds_recursive(Scene *scene, Sequence *metaseq)
+{
+ Sequence *seq;
+
+ /* for sound we go over full meta tree to update bounds of the sound strips,
+ since sound is played outside of evaluating the imbufs, */
+ for(seq=metaseq->seqbase.first; seq; seq=seq->next) {
+ if(seq->type == SEQ_META) {
+ seq_update_sound_bounds_recursive(scene, seq);
+ }
+ else if(ELEM(seq->type, SEQ_SOUND, SEQ_SCENE)) {
+ if(seq->scene_sound) {
+ int startofs = seq->startofs;
+ int endofs = seq->endofs;
+ if(seq->startofs + seq->start < metaseq->start + metaseq->startofs)
+ startofs = metaseq->start + metaseq->startofs - seq->start;
+
+ if(seq->start + seq->len - seq->endofs > metaseq->start + metaseq->len - metaseq->endofs)
+ endofs = seq->start + seq->len - metaseq->start - metaseq->len + metaseq->endofs;
+ sound_move_scene_sound(scene, seq->scene_sound, seq->start + startofs, seq->start+seq->len - endofs, startofs);
+ }
+ }
+ }
+}
+
void calc_sequence_disp(Scene *scene, Sequence *seq)
{
if(seq->startofs && seq->startstill) seq->startstill= 0;
@@ -539,34 +564,13 @@
seq->handsize= (float)((seq->enddisp-seq->startdisp)/25);
}
- seq_update_sound_bounds(scene, seq);
+ if(ELEM(seq->type, SEQ_SOUND, SEQ_SCENE)) {
+ seq_update_sound_bounds(scene, seq);
+ }
+ else if(seq->type == SEQ_META)
+ seq_update_sound_bounds_recursive(scene, seq);
}
-static void seq_update_sound_bounds_recursive(Scene *scene, Sequence *metaseq)
-{
- Sequence *seq;
-
- /* for sound we go over full meta tree to update bounds of the sound strips,
- since sound is played outside of evaluating the imbufs, */
- for(seq=metaseq->seqbase.first; seq; seq=seq->next) {
- if(seq->type == SEQ_META) {
- seq_update_sound_bounds_recursive(scene, seq);
- }
- else if(ELEM(seq->type, SEQ_SOUND, SEQ_SCENE)) {
- if(seq->scene_sound) {
- int startofs = seq->startofs;
- int endofs = seq->endofs;
- if(seq->startofs + seq->start < metaseq->start + metaseq->startofs)
- startofs = metaseq->start + metaseq->startofs - seq->start;
-
- if(seq->start + seq->len - seq->endofs > metaseq->start + metaseq->len - metaseq->endofs)
- endofs = seq->start + seq->len - metaseq->start - metaseq->len + metaseq->endofs;
- sound_move_scene_sound(scene, seq->scene_sound, seq->start + startofs, seq->start+seq->len - endofs, startofs);
- }
- }
- }
-}
-
void calc_sequence(Scene *scene, Sequence *seq)
{
Sequence *seqm;
@@ -3228,7 +3232,7 @@
void seq_update_sound_bounds(Scene* scene, Sequence *seq)
{
- sound_move_scene_sound_defaults(scene, seq);
+ sound_move_scene_sound_defaults(scene, seq);
/* mute is set in seq_update_muting_recursive */
}
More information about the Bf-blender-cvs
mailing list