[Bf-blender-cvs] [5b1404f0665] master: Depsgraph: Add utility function to unlink relation from graph
Sergey Sharybin
noreply at git.blender.org
Wed Dec 20 16:20:04 CET 2017
Commit: 5b1404f0665d7e110e60ebea8a1029a5f7f15a70
Author: Sergey Sharybin
Date: Wed Dec 20 16:15:55 2017 +0100
Branches: master
https://developer.blender.org/rB5b1404f0665d7e110e60ebea8a1029a5f7f15a70
Depsgraph: Add utility function to unlink relation from graph
===================================================================
M source/blender/depsgraph/intern/depsgraph.cc
M source/blender/depsgraph/intern/depsgraph.h
===================================================================
diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc
index 2ab6320f14f..9a3b1788aa1 100644
--- a/source/blender/depsgraph/intern/depsgraph.cc
+++ b/source/blender/depsgraph/intern/depsgraph.cc
@@ -51,6 +51,7 @@ extern "C" {
#include "RNA_access.h"
}
+#include <algorithm>
#include <cstring>
#include "DEG_depsgraph.h"
@@ -68,6 +69,14 @@ static DEG_EditorUpdateIDCb deg_editor_update_id_cb = NULL;
static DEG_EditorUpdateSceneCb deg_editor_update_scene_cb = NULL;
static DEG_EditorUpdateScenePreCb deg_editor_update_scene_pre_cb = NULL;
+/* 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()
: time_source(NULL),
need_update(false),
@@ -391,7 +400,15 @@ DepsRelation::DepsRelation(DepsNode *from,
DepsRelation::~DepsRelation()
{
/* Sanity check. */
- BLI_assert(this->from && this->to);
+ BLI_assert(from != NULL && to != NULL);
+}
+
+void DepsRelation::unlink()
+{
+ /* Sanity check. */
+ BLI_assert(from != NULL && to != NULL);
+ remove_from_vector(&from->outlinks, this);
+ remove_from_vector(&to->inlinks, this);
}
/* Low level tagging -------------------------------------- */
diff --git a/source/blender/depsgraph/intern/depsgraph.h b/source/blender/depsgraph/intern/depsgraph.h
index be20b20a2ac..ce56d67b6de 100644
--- a/source/blender/depsgraph/intern/depsgraph.h
+++ b/source/blender/depsgraph/intern/depsgraph.h
@@ -84,6 +84,8 @@ struct DepsRelation {
const char *description);
~DepsRelation();
+
+ void unlink();
};
/* ********* */
More information about the Bf-blender-cvs
mailing list