diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-05-06 13:46:14 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-05-06 13:54:16 +0300 |
commit | 064273a4ae7101f937cf2e16b0e2f1efcd2f0e38 (patch) | |
tree | b10ee52c452decf2cd3ba760794609ee6795043b /source/blender/depsgraph | |
parent | 2c0da4a3db96d4aeeeec1cfba4a0a9f5bf0fa970 (diff) |
Sound: Port more cases to be a part of dependency graph
Mainly covers RNA callbacks which were still doing direct scene update,
which was causing crashes. Now corresponding ID_RECALC flags are used,
so all scenes can update accordingly.
Also tested animated volume/pitch on strips, which now works as well.
Fixes T64133: Assert after changing FPS
Fixes T64154: Immediate crash when changing the current frame on the timeline
Fixes T64185: Client Crashes when the frame position value is changed
Fixes T64190: Blender Crash using Timeline Editor
Fixes T64128: Click to close bug type on timeline
Fixes T64147: Crash when setting current frame from Python
Fixes T64152: Blender Auto-Close on timeline change
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_rna.cc | 2 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph_tag.cc | 23 |
2 files changed, 20 insertions, 5 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_rna.cc b/source/blender/depsgraph/intern/builder/deg_builder_rna.cc index ea5f86a31a8..ca60e4370cd 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_rna.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_rna.cc @@ -309,10 +309,8 @@ RNANodeIdentifier RNANodeQuery::construct_node_identifier(const PointerRNA *ptr, return node_identifier; } else if (RNA_struct_is_a(ptr->type, &RNA_Sequence)) { - const Sequence *seq = static_cast<Sequence *>(ptr->data); /* Sequencer strip */ node_identifier.type = NodeType::SEQUENCER; - node_identifier.component_name = seq->name; return node_identifier; } else if (RNA_struct_is_a(ptr->type, &RNA_NodeSocket)) { diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc b/source/blender/depsgraph/intern/depsgraph_tag.cc index f7d7b76cb69..f932011ccab 100644 --- a/source/blender/depsgraph/intern/depsgraph_tag.cc +++ b/source/blender/depsgraph/intern/depsgraph_tag.cc @@ -215,9 +215,16 @@ void depsgraph_tag_to_component_opcode(const ID *id, /* There is no such node in depsgraph, this tag is to be handled * separately. */ break; - case ID_RECALC_SEQUENCER: + case ID_RECALC_SEQUENCER_STRIPS: *component_type = NodeType::SEQUENCER; break; + case ID_RECALC_AUDIO_SEEK: + case ID_RECALC_AUDIO_FPS: + case ID_RECALC_AUDIO_VOLUME: + case ID_RECALC_AUDIO_MUTE: + case ID_RECALC_AUDIO_LISTENER: + *component_type = NodeType::AUDIO; + break; case ID_RECALC_ALL: case ID_RECALC_PSYS_ALL: BLI_assert(!"Should not happen"); @@ -618,8 +625,18 @@ const char *DEG_update_tag_as_string(IDRecalcFlag flag) return "POINT_CACHE"; case ID_RECALC_EDITORS: return "EDITORS"; - case ID_RECALC_SEQUENCER: - return "SEQUENCER"; + case ID_RECALC_SEQUENCER_STRIPS: + return "SEQUENCER_STRIPS"; + case ID_RECALC_AUDIO_SEEK: + return "AUDIO_SEEK"; + case ID_RECALC_AUDIO_FPS: + return "AUDIO_FPS"; + case ID_RECALC_AUDIO_VOLUME: + return "AUDIO_VOLUME"; + case ID_RECALC_AUDIO_MUTE: + return "AUDIO_MUTE"; + case ID_RECALC_AUDIO_LISTENER: + return "AUDIO_LISTENER"; case ID_RECALC_ALL: return "ALL"; } |