[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