From 15d27c1ae53adc7d768fc6ca13073e74fbb36ee4 Mon Sep 17 00:00:00 2001 From: Richard Antalik Date: Tue, 22 Oct 2019 17:30:43 -0700 Subject: [PATCH] Fix T70845: Crash when switching scene of scene strip. Crash on assert in `sound_verify_evaluated_id()` Reviewed By: sergey Maniphest Tasks: T70845 Differential Revision: https://developer.blender.org/D6104 --- release/scripts/addons_contrib | 2 +- source/blender/blenkernel/intern/sound.c | 3 +++ source/blender/makesrna/intern/rna_sequencer.c | 9 ++++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib index 69bcc72f1ec..d9ed9d4d064 160000 --- a/release/scripts/addons_contrib +++ b/release/scripts/addons_contrib @@ -1 +1 @@ -Subproject commit 69bcc72f1ec4df73265ce35851658ef184b9d0f9 +Subproject commit d9ed9d4d064c74c86e2767cd4be32d602a0ee317 diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index 6cbb01861e2..d42436ecb40 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -677,6 +677,9 @@ void BKE_sound_set_cfra(int cfra) void BKE_sound_set_scene_volume(Scene *scene, float volume) { sound_verify_evaluated_id(&scene->id); + if (scene->sound_scene == NULL) { + return; + } AUD_Sequence_setAnimationData(scene->sound_scene, AUD_AP_VOLUME, CFRA, diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 31ead989f25..18985d41551 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -157,6 +157,13 @@ static void rna_Sequence_invalidate_composite_update(Main *UNUSED(bmain), } } +static void rna_Sequence_scene_switch_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + rna_Sequence_invalidate_raw_update(bmain, scene, ptr); + DEG_id_tag_update(&scene->id, ID_RECALC_AUDIO | ID_RECALC_SEQUENCER_STRIPS); + DEG_relations_tag_update(bmain); +} + static void rna_Sequence_use_sequence(Main *bmain, Scene *scene, PointerRNA *ptr) { /* General update callback. */ @@ -2227,7 +2234,7 @@ static void rna_def_scene(BlenderRNA *brna) prop = RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK); RNA_def_property_ui_text(prop, "Scene", "Scene that this sequence uses"); - RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_raw_update"); + RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_scene_switch_update"); prop = RNA_def_property(srna, "scene_camera", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_EDITABLE);