[Bf-blender-cvs] [9a6719a] terrible_consequencer: Undo previous changes to sound.

Antony Riakiotakis noreply at git.blender.org
Wed Oct 15 14:20:59 CEST 2014


Commit: 9a6719a3149d9d56d1ce349eb4c058b641aaa746
Author: Antony Riakiotakis
Date:   Wed Oct 15 13:05:46 2014 +0200
Branches: terrible_consequencer
https://developer.blender.org/rB9a6719a3149d9d56d1ce349eb4c058b641aaa746

Undo previous changes to sound.

The sound system really needs better design for the sequencer and
patching it up now won't really help us in the long run.

Also the sequencer kept leaking file descriptors when preserving
the audio handlles on undo making the branch unusable on mac and
windows.

It's almost certain patching over this will lead to more trouble, better
handle it separately and keep the system working for now.

Kept threaded loading of waveforms since we control the file input
directly there and leads to nice speedup, but we still clear the whole
sound + the waveform on undo, which is pretty bad.

===================================================================

M	source/blender/blenkernel/BKE_scene.h
M	source/blender/blenkernel/BKE_sequencer.h
M	source/blender/blenkernel/BKE_sound.h
M	source/blender/blenkernel/intern/scene.c
M	source/blender/blenkernel/intern/sequencer.c
M	source/blender/blenkernel/intern/sound.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/writefile.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/editors/space_sequencer/sequencer_edit.c
M	source/blender/makesrna/intern/rna_sequencer_api.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index f84a62b..1bfe0ee 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -98,7 +98,7 @@ void BKE_scene_base_flag_from_objects(struct Scene *scene);
 void BKE_scene_set_background(struct Main *bmain, struct Scene *sce);
 struct Scene *BKE_scene_set_name(struct Main *bmain, const char *name);
 
-struct Scene *BKE_scene_copy(struct Main *bmain, struct Scene *sce, int type);
+struct Scene *BKE_scene_copy(struct Scene *sce, int type);
 void BKE_scene_groups_relink(struct Scene *sce);
 void BKE_scene_unlink(struct Main *bmain, struct Scene *sce, struct Scene *newsce);
 
diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h
index 3f60721..13cc5d2 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -299,7 +299,7 @@ bool BKE_sequence_single_check(struct Sequence *seq);
 void BKE_sequence_single_fix(struct Sequence *seq);
 bool BKE_sequence_test_overlap(struct ListBase *seqbasep, struct Sequence *test);
 void BKE_sequence_translate(struct Scene *scene, struct Sequence *seq, int delta);
-void BKE_sequence_sound_init(struct Main *bmain, struct Scene *scene, struct Sequence *seq);
+void BKE_sequence_sound_init(struct Scene *scene, struct Sequence *seq);
 struct Sequence *BKE_sequencer_foreground_frame_get(struct Scene *scene, int frame);
 struct ListBase *BKE_sequence_seqbase(struct ListBase *seqbase, struct Sequence *seq);
 struct Sequence *BKE_sequence_metastrip(ListBase *seqbase /* = ed->seqbase */, struct Sequence *meta /* = NULL */, struct Sequence *seq);
@@ -310,7 +310,7 @@ bool BKE_sequence_base_shuffle(struct ListBase *seqbasep, struct Sequence *test,
 bool BKE_sequence_base_shuffle_time(ListBase *seqbasep, struct Scene *evil_scene);
 bool BKE_sequence_base_isolated_sel_check(struct ListBase *seqbase, bool one_only);
 void BKE_sequencer_free_imbuf(struct Scene *scene, struct ListBase *seqbasep, bool for_render);
-struct Sequence *BKE_sequence_dupli_recursive(struct Main *main, struct Scene *scene, struct Scene *scene_to, struct Sequence *seq, int dupe_flag);
+struct Sequence *BKE_sequence_dupli_recursive(struct Scene *scene, struct Scene *scene_to, struct Sequence *seq, int dupe_flag);
 int BKE_sequence_swap(struct Sequence *seq_a, struct Sequence *seq_b, const char **error_str);
 
 bool BKE_sequence_check_depend(struct Sequence *seq, struct Sequence *cur);
@@ -326,7 +326,7 @@ void BKE_sequencer_update_sound(struct Scene *scene, struct bSound *sound);
 void BKE_sequencer_refresh_sound_length(struct Scene *scene);
 
 void BKE_sequence_base_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq);
-void BKE_sequence_base_dupli_recursive(struct Main *bmain, struct Scene *scene, struct Scene *scene_to, ListBase *nseqbase, ListBase *seqbase, int dupe_flag);
+void BKE_sequence_base_dupli_recursive(struct Scene *scene, struct Scene *scene_to, ListBase *nseqbase, ListBase *seqbase, int dupe_flag);
 bool BKE_sequence_is_valid_check(struct Sequence *seq);
 
 void BKE_sequencer_clear_scene_in_allseqs(struct Main *bmain, struct Scene *sce);
diff --git a/source/blender/blenkernel/BKE_sound.h b/source/blender/blenkernel/BKE_sound.h
index a2c49a3..f318c74 100644
--- a/source/blender/blenkernel/BKE_sound.h
+++ b/source/blender/blenkernel/BKE_sound.h
@@ -94,8 +94,8 @@ void sound_update_scene_listener(struct Scene *scene);
 void *sound_scene_add_scene_sound(struct Scene *scene, struct Sequence *sequence, int startframe, int endframe, int frameskip);
 void *sound_scene_add_scene_sound_defaults(struct Scene *scene, struct Sequence *sequence);
 
-void *sound_add_scene_sound(struct Main *bmain, struct Scene *scene, struct Sequence *sequence, int startframe, int endframe, int frameskip);
-void *sound_add_scene_sound_defaults(struct Main *bmain, struct Scene *scene, struct Sequence *sequence);
+void *sound_add_scene_sound(struct Scene *scene, struct Sequence *sequence, int startframe, int endframe, int frameskip);
+void *sound_add_scene_sound_defaults(struct Scene *scene, struct Sequence *sequence);
 
 void sound_remove_scene_sound(struct Scene *scene, void *handle);
 
@@ -116,6 +116,8 @@ void sound_set_scene_sound_pitch(void *handle, float pitch, char animated);
 
 void sound_set_scene_sound_pan(void *handle, float pan, char animated);
 
+void sound_update_sequencer(struct Main *main, struct bSound *sound);
+
 void sound_play_scene(struct Scene *scene);
 
 void sound_stop_scene(struct Scene *scene);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index eb4ab90..5bfd6e8 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -143,7 +143,7 @@ static void remove_sequencer_fcurves(Scene *sce)
 	}
 }
 
-Scene *BKE_scene_copy(Main *bmain, Scene *sce, int type)
+Scene *BKE_scene_copy(Scene *sce, int type)
 {
 	Scene *scen;
 	SceneRenderLayer *srl, *new_srl;
@@ -300,7 +300,7 @@ Scene *BKE_scene_copy(Main *bmain, Scene *sce, int type)
 		if (sce->ed) {
 			scen->ed = MEM_callocN(sizeof(Editing), "addseq");
 			scen->ed->seqbasep = &scen->ed->seqbase;
-			BKE_sequence_base_dupli_recursive(bmain, sce, scen, &scen->ed->seqbase, &sce->ed->seqbase, SEQ_DUPE_ALL);
+			BKE_sequence_base_dupli_recursive(sce, scen, &scen->ed->seqbase, &sce->ed->seqbase, SEQ_DUPE_ALL);
 		}
 	}
 
@@ -1716,7 +1716,7 @@ void BKE_scene_update_for_newframe_ex(EvaluationContext *eval_ctx, Main *bmain,
 	 * we need to do it here to avoid rebuilding the world on every simulation change, which can be very expensive
 	 */
 	scene_rebuild_rbw_recursive(sce, ctime);
-	
+
 	sound_set_cfra(sce->r.cfra);
 	
 	/* clear animation overrides */
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index f8bb70b..c9647b0 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -194,7 +194,7 @@ static void BKE_sequence_free_ex(Scene *scene, Sequence *seq, const bool do_cach
 	if (seq->sound) {
 		((ID *)seq->sound)->us--; 
 	}
-	
+
 	/* clipboard has no scene and will never have a sound handle or be active
 	 * same goes to sequences copy for proxy rebuild job
 	 */
@@ -1523,7 +1523,7 @@ SeqIndexBuildContext *BKE_sequencer_proxy_rebuild_context(Main *bmain, Scene *sc
 
 	context = MEM_callocN(sizeof(SeqIndexBuildContext), "seq proxy rebuild context");
 
-	nseq = BKE_sequence_dupli_recursive(bmain, scene, scene, seq, 0);
+	nseq = BKE_sequence_dupli_recursive(scene, scene, seq, 0);
 
 	context->tc_flags   = nseq->strip->proxy->build_tc_flags;
 	context->size_flags = nseq->strip->proxy->build_size_flags;
@@ -3671,17 +3671,17 @@ void BKE_sequence_translate(Scene *evil_scene, Sequence *seq, int delta)
 	BKE_sequence_calc_disp(evil_scene, seq);
 }
 
-void BKE_sequence_sound_init(Main *bmain, Scene *scene, Sequence *seq)
+void BKE_sequence_sound_init(Scene *scene, Sequence *seq)
 {
 	if (seq->type == SEQ_TYPE_META) {
 		Sequence *seq_child;
 		for (seq_child = seq->seqbase.first; seq_child; seq_child = seq_child->next) {
-			BKE_sequence_sound_init(bmain, scene, seq_child);
+			BKE_sequence_sound_init(scene, seq_child);
 		}
 	}
 	else {
 		if (seq->sound) {
-			seq->scene_sound = sound_add_scene_sound_defaults(bmain, scene, seq);
+			seq->scene_sound = sound_add_scene_sound_defaults(scene, seq);
 		}
 		if (seq->scene) {
 			seq->scene_sound = sound_scene_add_scene_sound_defaults(scene, seq);
@@ -4425,7 +4425,7 @@ Sequence *BKE_sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoad
 
 	BLI_split_dirfile(seq_load->path, strip->dir, se->name, sizeof(strip->dir), sizeof(se->name));
 
-	seq->scene_sound = sound_add_scene_sound(bmain, scene, seq, seq_load->start_frame, seq_load->start_frame + seq->len, 0);
+	seq->scene_sound = sound_add_scene_sound(scene, seq, seq_load->start_frame, seq_load->start_frame + seq->len, 0);
 
 	BKE_sequence_calc_disp(scene, seq);
 
@@ -4508,7 +4508,7 @@ Sequence *BKE_sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoad
 	return seq;
 }
 
-static Sequence *seq_dupli(Main *bmain, Scene *scene, Scene *scene_to, Sequence *seq, int dupe_flag)
+static Sequence *seq_dupli(Scene *scene, Scene *scene_to, Sequence *seq, int dupe_flag)
 {
 	Scene *sce_audio = scene_to ? scene_to : scene;
 	Sequence *seqn = MEM_dupallocN(seq);
@@ -4564,7 +4564,7 @@ static Sequence *seq_dupli(Main *bmain, Scene *scene, Scene *scene_to, Sequence
 		seqn->strip->stripdata =
 		        MEM_dupallocN(seq->strip->stripdata);
 		if (seq->scene_sound)
-			seqn->scene_sound = sound_add_scene_sound_defaults(bmain, sce_audio, seqn);
+			seqn->scene_sound = sound_add_scene_sound_defaults(sce_audio, seqn);
 
 		id_us_plus((ID *)seqn->sound);
 	}
@@ -4601,13 +4601,13 @@ static Sequence *seq_dupli(Main *bmain, Scene *scene, Scene *scene_to, Sequence
 	return seqn;
 }
 
-Sequence *BKE_sequence_dupli_recursive(Main *bmain, Scene *scene, Scene *scene_to, Sequence *seq, int dupe_flag)
+Sequence *BKE_sequence_dupli_recursive(Scene *scene, Scene *scene_to, Sequence *seq, int dupe_flag)
 {
-	Sequence *seqn = seq_dupli(bmain, scene, scene_to, seq, dupe_flag);
+	Sequence *seqn = seq_dupli(scene, scene_to, seq, dupe_flag);
 	if (seq->type == SEQ_TYPE_META) {
 		Sequence *s;
 		for (s = seq->seqbase.first; s; s = s->next) {
-			Sequence *n = BKE_sequence_dupli_recursive(bmain, scene, scene_to, s, dupe_flag);
+			Sequence *n = BKE_sequence_dupli_recursive(scene, scene_to, s, dupe_flag);
 			if (n) {
 				BLI_addtail(&seqn->seqbase, n);
 			}
@@ -4616,7 +4616,7 @@ Sequence *BKE_sequence_dupli_recursive(Main *bmain, Scene *scene, Scene *scene_t
 	return seqn;
 }
 
-void BKE_sequence_base_dupli_recursive(Main *bmain, Scene *scene, Scene *scene_to, ListBase *nseqbase, ListBase *seqbase, int dupe_flag)
+void BKE_sequence_base_dupli_recursive(Scene *scene, Scene *scene_to, ListBase *nseqbase, ListBase *seqbase, int dupe_flag)
 {
 	Sequence *seq;
 	Sequence *seqn = NULL;
@@ -4625,7 +4625,7 @@ void BKE_sequence_base_dupli_recursive(Main *bmain, Scene *scene, Scene *scene_t
 	for (seq = seqbase->first; seq;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list