diff options
Diffstat (limited to 'source/blender/depsgraph/intern')
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph.cc | 8 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph.h | 5 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph_build.cc | 2 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph_debug.cc | 2 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph_tag.cc | 6 |
5 files changed, 13 insertions, 10 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc index 6d3aed65a14..6e98907597b 100644 --- a/source/blender/depsgraph/intern/depsgraph.cc +++ b/source/blender/depsgraph/intern/depsgraph.cc @@ -65,10 +65,11 @@ template<typename T> static void remove_from_vector(vector<T> *vector, const T & vector->erase(std::remove(vector->begin(), vector->end(), value), vector->end()); } -Depsgraph::Depsgraph(Scene *scene, ViewLayer *view_layer, eEvaluationMode mode) +Depsgraph::Depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode) : time_source(NULL), need_update(true), need_update_time(false), + bmain(bmain), scene(scene), view_layer(view_layer), mode(mode), @@ -313,9 +314,10 @@ ID *Depsgraph::get_cow_id(const ID *id_orig) const /* Public Graph API */ /* Initialize a new Depsgraph */ -Depsgraph *DEG_graph_new(Scene *scene, ViewLayer *view_layer, eEvaluationMode mode) +Depsgraph *DEG_graph_new(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode) { - DEG::Depsgraph *deg_depsgraph = OBJECT_GUARDED_NEW(DEG::Depsgraph, scene, view_layer, mode); + DEG::Depsgraph *deg_depsgraph = OBJECT_GUARDED_NEW( + DEG::Depsgraph, bmain, scene, view_layer, mode); return reinterpret_cast<Depsgraph *>(deg_depsgraph); } diff --git a/source/blender/depsgraph/intern/depsgraph.h b/source/blender/depsgraph/intern/depsgraph.h index 96b1a2a1f8a..30ae4edde34 100644 --- a/source/blender/depsgraph/intern/depsgraph.h +++ b/source/blender/depsgraph/intern/depsgraph.h @@ -100,7 +100,7 @@ struct Depsgraph { typedef vector<OperationNode *> OperationNodes; typedef vector<IDNode *> IDDepsNodes; - Depsgraph(Scene *scene, ViewLayer *view_layer, eEvaluationMode mode); + Depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode); ~Depsgraph(); TimeSourceNode *add_time_source(); @@ -172,7 +172,8 @@ struct Depsgraph { * Mainly used by graph evaluation. */ SpinLock lock; - /* Scene, layer, mode this dependency graph is built for. */ + /* Main, scene, layer, mode this dependency graph is built for. */ + Main *bmain; Scene *scene; ViewLayer *view_layer; eEvaluationMode mode; diff --git a/source/blender/depsgraph/intern/depsgraph_build.cc b/source/blender/depsgraph/intern/depsgraph_build.cc index dd2d7f70ed5..968ed8ef403 100644 --- a/source/blender/depsgraph/intern/depsgraph_build.cc +++ b/source/blender/depsgraph/intern/depsgraph_build.cc @@ -358,7 +358,7 @@ void DEG_relations_tag_update(Main *bmain) DEG_GLOBAL_DEBUG_PRINTF(TAG, "%s: Tagging relations for update.\n", __func__); LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) { - Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(scene, view_layer, false); + Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(bmain, scene, view_layer, false); if (depsgraph != NULL) { DEG_graph_tag_relations_update(depsgraph); } diff --git a/source/blender/depsgraph/intern/depsgraph_debug.cc b/source/blender/depsgraph/intern/depsgraph_debug.cc index c5a756102ca..d079c958e04 100644 --- a/source/blender/depsgraph/intern/depsgraph_debug.cc +++ b/source/blender/depsgraph/intern/depsgraph_debug.cc @@ -91,7 +91,7 @@ bool DEG_debug_graph_relations_validate(Depsgraph *graph, Scene *scene, ViewLayer *view_layer) { - Depsgraph *temp_depsgraph = DEG_graph_new(scene, view_layer, DEG_get_mode(graph)); + Depsgraph *temp_depsgraph = DEG_graph_new(bmain, scene, view_layer, DEG_get_mode(graph)); bool valid = true; DEG_graph_build_from_view_layer(temp_depsgraph, bmain, scene, view_layer); if (!DEG_debug_compare(temp_depsgraph, graph)) { diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc b/source/blender/depsgraph/intern/depsgraph_tag.cc index 647837bd758..fd74529a30d 100644 --- a/source/blender/depsgraph/intern/depsgraph_tag.cc +++ b/source/blender/depsgraph/intern/depsgraph_tag.cc @@ -607,7 +607,7 @@ void id_tag_update(Main *bmain, ID *id, int flag, eUpdateSource update_source) graph_id_tag_update(bmain, NULL, id, flag, update_source); LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) { - Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(scene, view_layer, false); + Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(bmain, scene, view_layer, false); if (depsgraph != NULL) { graph_id_tag_update(bmain, depsgraph, id, flag, update_source); } @@ -771,7 +771,7 @@ void DEG_id_type_tag(Main *bmain, short id_type) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) { - Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(scene, view_layer, false); + Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(bmain, scene, view_layer, false); if (depsgraph != NULL) { DEG_graph_id_type_tag(depsgraph, id_type); } @@ -790,7 +790,7 @@ void DEG_on_visible_update(Main *bmain, const bool do_time) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) { - Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(scene, view_layer, false); + Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(bmain, scene, view_layer, false); if (depsgraph != NULL) { DEG_graph_on_visible_update(bmain, depsgraph, do_time); } |