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>2018-09-19 16:46:03 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-09-19 17:10:12 +0300
commit749d5c033c62a0cb082f7c9dbbe3e742f043d83e (patch)
treede64cd91c36a592cd1ef67157c21b834436a0c87 /source/blender/depsgraph/intern/builder
parentafb4da6650daeb8b8ac5fe9d3a6439c3433d7dc5 (diff)
Depsgraph: Make visible update to operate on per-component level
Diffstat (limited to 'source/blender/depsgraph/intern/builder')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.cc11
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.h6
2 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index da47465dd47..07b819a4d72 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -163,16 +163,18 @@ IDDepsNode *DepsgraphNodeBuilder::add_id_node(ID *id)
{
IDDepsNode *id_node = NULL;
ID *id_cow = NULL;
- bool is_previous_directly_visible = false;
+ IDComponentsMask previously_visible_components_mask = 0;
IDInfo *id_info = (IDInfo *)BLI_ghash_lookup(id_info_hash_, id);
if (id_info != NULL) {
id_cow = id_info->id_cow;
- is_previous_directly_visible = id_info->is_directly_visible;
+ previously_visible_components_mask =
+ id_info->previously_visible_components_mask;
/* Tag ID info to not free the CoW ID pointer. */
id_info->id_cow = NULL;
}
id_node = graph_->add_id_node(id, id_cow);
- id_node->is_previous_directly_visible = is_previous_directly_visible;
+ id_node->previously_visible_components_mask =
+ previously_visible_components_mask;
/* Currently all ID nodes are supposed to have copy-on-write logic.
*
* NOTE: Zero number of components indicates that ID node was just created.
@@ -352,7 +354,8 @@ void DepsgraphNodeBuilder::begin_build()
else {
id_info->id_cow = NULL;
}
- id_info->is_directly_visible = id_node->is_directly_visible;
+ id_info->previously_visible_components_mask =
+ id_node->visible_components_mask;
BLI_ghash_insert(id_info_hash_, id_node->id_orig, id_info);
id_node->id_cow = NULL;
}
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
index 37000c958ce..74709f2b57f 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
@@ -35,6 +35,8 @@
#include "DEG_depsgraph.h"
+#include "intern/nodes/deg_node_id.h"
+
struct Base;
struct bArmature;
struct bAction;
@@ -225,10 +227,10 @@ struct DepsgraphNodeBuilder {
struct IDInfo {
/* Copy-on-written pointer of the corresponding ID. */
ID *id_cow;
- /* State of the is_visible from ID node from previous state of the
+ /* Mask of visible components from previous state of the
* dependency graph.
*/
- bool is_directly_visible;
+ IDComponentsMask previously_visible_components_mask;
};
protected: