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 */
 }
 

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

Reply via email to