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:
authorSergey Sharybin <sergey.vfx@gmail.com>2017-11-08 16:48:25 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-12-18 18:14:50 +0300
commitc5d9eb88e21001bccf039e5d9ed746a9280302a1 (patch)
treeab87d9ce5c36a9a2452ce62465d11442c150e544 /source/blender/depsgraph/intern
parent8fe556a337792b7d3bba6e2c3a03820d65d8a2b9 (diff)
Depsgraph: Replace iteration over ghash with iteration over flat array
Diffstat (limited to 'source/blender/depsgraph/intern')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder.cc8
-rw-r--r--source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc8
-rw-r--r--source/blender/depsgraph/intern/depsgraph_debug.cc4
-rw-r--r--source/blender/depsgraph/intern/depsgraph_tag.cc4
4 files changed, 6 insertions, 18 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder.cc b/source/blender/depsgraph/intern/builder/deg_builder.cc
index 26f729a16d7..c79716e5ea5 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder.cc
@@ -125,8 +125,7 @@ void deg_graph_build_finalize(Depsgraph *graph)
* to do it ahead of a time and don't spend time on flushing updates on
* every frame change.
*/
- GHASH_FOREACH_BEGIN(IDDepsNode *, id_node, graph->id_hash)
- {
+ foreach (IDDepsNode *id_node, graph->id_nodes) {
if (id_node->layers == 0) {
ID *id = id_node->id;
if (GS(id->name) == ID_OB) {
@@ -137,14 +136,12 @@ void deg_graph_build_finalize(Depsgraph *graph)
}
}
}
- GHASH_FOREACH_END();
/* STEP 2: Flush visibility layers from children to parent. */
deg_graph_build_flush_layers(graph);
/* STEP 3: Re-tag IDs for update if it was tagged before the relations
* update tag.
*/
- GHASH_FOREACH_BEGIN(IDDepsNode *, id_node, graph->id_hash)
- {
+ foreach (IDDepsNode *id_node, graph->id_nodes) {
GHASH_FOREACH_BEGIN(ComponentDepsNode *, comp, id_node->components)
{
id_node->layers |= comp->layers;
@@ -169,7 +166,6 @@ void deg_graph_build_finalize(Depsgraph *graph)
}
id_node->finalize_build();
}
- GHASH_FOREACH_END();
}
} // namespace DEG
diff --git a/source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc b/source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc
index d7457b9eb6c..528758daeb2 100644
--- a/source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc
+++ b/source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc
@@ -497,11 +497,9 @@ static void deg_debug_graphviz_node_relations(const DebugContext &ctx,
static void deg_debug_graphviz_graph_nodes(const DebugContext &ctx,
const Depsgraph *graph)
{
- GHASH_FOREACH_BEGIN (DepsNode *, node, graph->id_hash)
- {
+ foreach (DepsNode *node, graph->id_nodes) {
deg_debug_graphviz_node(ctx, node);
}
- GHASH_FOREACH_END();
TimeSourceDepsNode *time_source = graph->find_time_source();
if (time_source != NULL) {
deg_debug_graphviz_node(ctx, time_source);
@@ -511,8 +509,7 @@ static void deg_debug_graphviz_graph_nodes(const DebugContext &ctx,
static void deg_debug_graphviz_graph_relations(const DebugContext &ctx,
const Depsgraph *graph)
{
- GHASH_FOREACH_BEGIN(IDDepsNode *, id_node, graph->id_hash)
- {
+ foreach (IDDepsNode *id_node, graph->id_nodes) {
GHASH_FOREACH_BEGIN(ComponentDepsNode *, comp_node, id_node->components)
{
foreach (OperationDepsNode *op_node, comp_node->operations) {
@@ -521,7 +518,6 @@ static void deg_debug_graphviz_graph_relations(const DebugContext &ctx,
}
GHASH_FOREACH_END();
}
- GHASH_FOREACH_END();
TimeSourceDepsNode *time_source = graph->find_time_source();
if (time_source != NULL) {
diff --git a/source/blender/depsgraph/intern/depsgraph_debug.cc b/source/blender/depsgraph/intern/depsgraph_debug.cc
index 0b1156a78ba..f6f3cd06708 100644
--- a/source/blender/depsgraph/intern/depsgraph_debug.cc
+++ b/source/blender/depsgraph/intern/depsgraph_debug.cc
@@ -197,8 +197,7 @@ void DEG_stats_simple(const Depsgraph *graph, size_t *r_outer,
size_t tot_outer = 0;
size_t tot_rels = 0;
- GHASH_FOREACH_BEGIN(DEG::IDDepsNode *, id_node, deg_graph->id_hash)
- {
+ foreach (DEG::IDDepsNode *id_node, deg_graph->id_nodes) {
tot_outer++;
GHASH_FOREACH_BEGIN(DEG::ComponentDepsNode *, comp_node, id_node->components)
{
@@ -209,7 +208,6 @@ void DEG_stats_simple(const Depsgraph *graph, size_t *r_outer,
}
GHASH_FOREACH_END();
}
- GHASH_FOREACH_END();
DEG::TimeSourceDepsNode *time_source = deg_graph->find_time_source();
if (time_source != NULL) {
diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc b/source/blender/depsgraph/intern/depsgraph_tag.cc
index 79c30e7904d..2979cf7270d 100644
--- a/source/blender/depsgraph/intern/depsgraph_tag.cc
+++ b/source/blender/depsgraph/intern/depsgraph_tag.cc
@@ -292,8 +292,7 @@ void DEG_graph_on_visible_update(Main *bmain, Scene *scene)
* This is mainly needed on file load only, after that updates of invisible objects
* will be stored in the pending list.
*/
- GHASH_FOREACH_BEGIN(DEG::IDDepsNode *, id_node, graph->id_hash)
- {
+ foreach (DEG::IDDepsNode *id_node, graph->id_nodes) {
ID *id = id_node->id;
if ((id->recalc & ID_RECALC_ALL) != 0 ||
(id_node->layers & scene->lay_updated) == 0)
@@ -319,7 +318,6 @@ void DEG_graph_on_visible_update(Main *bmain, Scene *scene)
}
}
}
- GHASH_FOREACH_END();
}
scene->lay_updated |= graph->layers;
/* If graph is tagged for update, we don't need to bother with updates here,