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:
authorBastien Montagne <montagne29@wanadoo.fr>2020-01-24 13:26:02 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2020-01-24 13:39:21 +0300
commitaf00fab312361ba62ba52471ae6f9f34505ffd6e (patch)
tree15d535113c1240a7b6d4a78423a59d6012318c90 /source/blender/blenkernel
parent005af1e274599939c71dce4e9fa7e0e64e6b531f (diff)
IDProps: add utility to set an ID pointer IDProp value.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_idprop.h2
-rw-r--r--source/blender/blenkernel/intern/idprop.c15
2 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_idprop.h b/source/blender/blenkernel/BKE_idprop.h
index 94c2a94d420..2b02895043f 100644
--- a/source/blender/blenkernel/BKE_idprop.h
+++ b/source/blender/blenkernel/BKE_idprop.h
@@ -83,6 +83,8 @@ void IDP_FreeString(struct IDProperty *prop) ATTR_NONNULL();
typedef void (*IDPWalkFunc)(void *userData, IDProperty *idp);
+void IDP_AssignID(IDProperty *prop, ID *id, const int flag);
+
/*-------- Group Functions -------*/
/** Sync values from one group to another, only where they match */
diff --git a/source/blender/blenkernel/intern/idprop.c b/source/blender/blenkernel/intern/idprop.c
index 1125047be32..e3b27236616 100644
--- a/source/blender/blenkernel/intern/idprop.c
+++ b/source/blender/blenkernel/intern/idprop.c
@@ -461,6 +461,21 @@ static IDProperty *IDP_CopyID(const IDProperty *prop, const int flag)
return newp;
}
+void IDP_AssignID(IDProperty *prop, ID *id, const int flag)
+{
+ BLI_assert(prop->type == IDP_ID);
+
+ if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0 && IDP_Id(prop) != NULL) {
+ id_us_min(IDP_Id(prop));
+ }
+
+ prop->data.pointer = id;
+
+ if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) {
+ id_us_plus(IDP_Id(prop));
+ }
+}
+
/** \} */
/* -------------------------------------------------------------------- */