Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/depsgraph/intern/eval')
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval.cc4
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval_flush.cc16
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval_flush.h2
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_sequencer.cc8
4 files changed, 14 insertions, 16 deletions
diff --git a/source/blender/depsgraph/intern/eval/deg_eval.cc b/source/blender/depsgraph/intern/eval/deg_eval.cc
index 1ede2cf914a..2e0487bfca1 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval.cc
@@ -86,8 +86,8 @@ enum class EvaluationStage {
/* Workaround for areas which can not be evaluated in threads.
*
- * For example, metaballs, which are iterating over all bases and are requesting dupli-lists
- * to see whether there are metaballs inside. */
+ * For example, meta-balls, which are iterating over all bases and are requesting dupli-lists
+ * to see whether there are meta-balls inside. */
SINGLE_THREADED_WORKAROUND,
};
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
index a74ec485d88..5ccdcbec858 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
@@ -351,19 +351,15 @@ void invalidate_tagged_evaluated_data(Depsgraph *graph)
/* Flush updates from tagged nodes outwards until all affected nodes
* are tagged.
*/
-void deg_graph_flush_updates(Main *bmain, Depsgraph *graph)
+void deg_graph_flush_updates(Depsgraph *graph)
{
/* Sanity checks. */
- BLI_assert(bmain != nullptr);
BLI_assert(graph != nullptr);
+ Main *bmain = graph->bmain;
+
+ graph->time_source->flush_update_tag(graph);
+
/* Nothing to update, early out. */
- if (graph->need_update_time) {
- const Scene *scene_orig = graph->scene;
- const float ctime = BKE_scene_frame_get(scene_orig);
- TimeSourceNode *time_source = graph->find_time_source();
- graph->ctime = ctime;
- time_source->tag_update(graph, DEG_UPDATE_SOURCE_TIME);
- }
if (graph->entry_tags.is_empty()) {
return;
}
@@ -411,6 +407,8 @@ void deg_graph_clear_tags(Depsgraph *graph)
}
/* Clear any entry tags which haven't been flushed. */
graph->entry_tags.clear();
+
+ graph->time_source->tagged_for_update = false;
}
} // namespace deg
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_flush.h b/source/blender/depsgraph/intern/eval/deg_eval_flush.h
index c76dc9fe01d..1f58c54dbf4 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_flush.h
+++ b/source/blender/depsgraph/intern/eval/deg_eval_flush.h
@@ -35,7 +35,7 @@ struct Depsgraph;
/* Flush updates from tagged nodes outwards until all affected nodes
* are tagged.
*/
-void deg_graph_flush_updates(struct Main *bmain, struct Depsgraph *graph);
+void deg_graph_flush_updates(struct Depsgraph *graph);
/* Clear tags from all operation nodes. */
void deg_graph_clear_tags(struct Depsgraph *graph);
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_sequencer.cc b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_sequencer.cc
index ba7d20c0ba8..4d79480a5ad 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_sequencer.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_sequencer.cc
@@ -41,7 +41,7 @@ SequencerBackup::SequencerBackup(const Depsgraph *depsgraph) : depsgraph(depsgra
void SequencerBackup::init_from_scene(Scene *scene)
{
Sequence *sequence;
- SEQ_BEGIN (scene->ed, sequence) {
+ SEQ_ALL_BEGIN (scene->ed, sequence) {
SequenceBackup sequence_backup(depsgraph);
sequence_backup.init_from_sequence(sequence);
if (!sequence_backup.isEmpty()) {
@@ -50,13 +50,13 @@ void SequencerBackup::init_from_scene(Scene *scene)
sequences_backup.add(session_uuid, sequence_backup);
}
}
- SEQ_END;
+ SEQ_ALL_END;
}
void SequencerBackup::restore_to_scene(Scene *scene)
{
Sequence *sequence;
- SEQ_BEGIN (scene->ed, sequence) {
+ SEQ_ALL_BEGIN (scene->ed, sequence) {
const SessionUUID &session_uuid = sequence->runtime.session_uuid;
BLI_assert(BLI_session_uuid_is_generated(&session_uuid));
SequenceBackup *sequence_backup = sequences_backup.lookup_ptr(session_uuid);
@@ -64,7 +64,7 @@ void SequencerBackup::restore_to_scene(Scene *scene)
sequence_backup->restore_to_sequence(sequence);
}
}
- SEQ_END;
+ SEQ_ALL_END;
/* Cleanup audio while the scene is still known. */
for (SequenceBackup &sequence_backup : sequences_backup.values()) {
if (sequence_backup.scene_sound != nullptr) {