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
This commit is contained in:
Richard Antalik
2019-10-22 17:30:43 -07:00
committed by Richard Antalik
parent ac18c3c28d
commit 15d27c1ae5
3 changed files with 12 additions and 2 deletions

View File

@@ -677,6 +677,9 @@ void BKE_sound_set_cfra(int cfra)
void BKE_sound_set_scene_volume(Scene *scene, float volume) void BKE_sound_set_scene_volume(Scene *scene, float volume)
{ {
sound_verify_evaluated_id(&scene->id); sound_verify_evaluated_id(&scene->id);
if (scene->sound_scene == NULL) {
return;
}
AUD_Sequence_setAnimationData(scene->sound_scene, AUD_Sequence_setAnimationData(scene->sound_scene,
AUD_AP_VOLUME, AUD_AP_VOLUME,
CFRA, CFRA,

View File

@@ -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) static void rna_Sequence_use_sequence(Main *bmain, Scene *scene, PointerRNA *ptr)
{ {
/* General update callback. */ /* General update callback. */
@@ -2227,7 +2234,7 @@ static void rna_def_scene(BlenderRNA *brna)
prop = RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE); prop = RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK); 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_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); prop = RNA_def_property(srna, "scene_camera", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_flag(prop, PROP_EDITABLE);