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/depsgraph.cc')
-rw-r--r--source/blender/depsgraph/intern/depsgraph.cc25
1 files changed, 6 insertions, 19 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc
index 6d88782d68c..d4a6b0a8b76 100644
--- a/source/blender/depsgraph/intern/depsgraph.cc
+++ b/source/blender/depsgraph/intern/depsgraph.cc
@@ -31,15 +31,12 @@
#include "MEM_guardedalloc.h"
#include "BLI_console.h"
-#include "BLI_ghash.h"
#include "BLI_hash.h"
#include "BLI_utildefines.h"
-extern "C" {
#include "BKE_global.h"
#include "BKE_idtype.h"
#include "BKE_scene.h"
-}
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_debug.h"
@@ -60,12 +57,6 @@ extern "C" {
namespace DEG {
-/* TODO(sergey): Find a better place for this. */
-template<typename T> static void remove_from_vector(vector<T> *vector, const T &value)
-{
- vector->erase(std::remove(vector->begin(), vector->end(), value), vector->end());
-}
-
Depsgraph::Depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
: time_source(nullptr),
need_update(true),
@@ -81,8 +72,6 @@ Depsgraph::Depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluati
is_render_pipeline_depsgraph(false)
{
BLI_spin_init(&lock);
- id_hash = BLI_ghash_ptr_new("Depsgraph id hash");
- entry_tags = BLI_gset_ptr_new("Depsgraph entry_tags");
memset(id_type_updated, 0, sizeof(id_type_updated));
memset(id_type_exist, 0, sizeof(id_type_exist));
memset(physics_relations, 0, sizeof(physics_relations));
@@ -91,8 +80,6 @@ Depsgraph::Depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluati
Depsgraph::~Depsgraph()
{
clear_id_nodes();
- BLI_ghash_free(id_hash, nullptr, nullptr);
- BLI_gset_free(entry_tags, nullptr);
if (time_source != nullptr) {
OBJECT_GUARDED_DELETE(time_source, TimeSourceNode);
}
@@ -117,7 +104,7 @@ TimeSourceNode *Depsgraph::find_time_source() const
IDNode *Depsgraph::find_id_node(const ID *id) const
{
- return reinterpret_cast<IDNode *>(BLI_ghash_lookup(id_hash, id));
+ return id_hash.lookup_default(id, nullptr);
}
IDNode *Depsgraph::add_id_node(ID *id, ID *id_cow_hint)
@@ -132,7 +119,7 @@ IDNode *Depsgraph::add_id_node(ID *id, ID *id_cow_hint)
*
* NOTE: We address ID nodes by the original ID pointer they are
* referencing to. */
- BLI_ghash_insert(id_hash, id, id_node);
+ id_hash.add_new(id, id_node);
id_nodes.push_back(id_node);
id_type_exist[BKE_idtype_idcode_to_index(GS(id->name))] = 1;
@@ -170,7 +157,7 @@ void Depsgraph::clear_id_nodes()
OBJECT_GUARDED_DELETE(id_node, IDNode);
}
/* Clear containers. */
- BLI_ghash_clear(id_hash, nullptr, nullptr);
+ id_hash.clear();
id_nodes.clear();
/* Clear physics relation caches. */
clear_physics_relations(this);
@@ -233,7 +220,7 @@ void Depsgraph::add_entry_tag(OperationNode *node)
* from.
* NOTE: this is necessary since we have several thousand nodes to play
* with. */
- BLI_gset_insert(entry_tags, node);
+ entry_tags.add(node);
}
void Depsgraph::clear_all_nodes()
@@ -320,9 +307,9 @@ void DEG_graph_free(Depsgraph *graph)
OBJECT_GUARDED_DELETE(deg_depsgraph, Depsgraph);
}
-bool DEG_is_evaluating(struct Depsgraph *depsgraph)
+bool DEG_is_evaluating(const struct Depsgraph *depsgraph)
{
- DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(depsgraph);
+ const DEG::Depsgraph *deg_graph = reinterpret_cast<const DEG::Depsgraph *>(depsgraph);
return deg_graph->is_evaluating;
}