[Bf-blender-cvs] [e7d4d66] master: Cleanup/refactor: handle shapekeys exactly like 'owned' nodetrees in make_local process.

Bastien Montagne noreply at git.blender.org
Thu Jul 14 18:33:27 CEST 2016


Commit: e7d4d661f34091bf04615e49820c6806db6fea54
Author: Bastien Montagne
Date:   Thu Jul 14 15:38:41 2016 +0200
Branches: master
https://developer.blender.org/rBe7d4d661f34091bf04615e49820c6806db6fea54

Cleanup/refactor: handle shapekeys exactly like 'owned' nodetrees in make_local process.

===================================================================

M	source/blender/blenkernel/intern/curve.c
M	source/blender/blenkernel/intern/lattice.c
M	source/blender/blenkernel/intern/library.c
M	source/blender/blenkernel/intern/mesh.c

===================================================================

diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 596890d..693e7eb 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -233,9 +233,6 @@ void BKE_curve_make_local(Main *bmain, Curve *cu, const bool force_local)
 	if (force_local || is_local) {
 		if (!is_lib) {
 			id_clear_lib_data(bmain, &cu->id);
-			if (cu->key) {
-				id_clear_lib_data(bmain, &cu->key->id);
-			}
 			BKE_id_expand_local(&cu->id);
 		}
 		else {
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c
index 0babe1d..c2675fa 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -348,9 +348,6 @@ void BKE_lattice_make_local(Main *bmain, Lattice *lt, const bool force_local)
 	if (force_local || is_local) {
 		if (!is_lib) {
 			id_clear_lib_data(bmain, &lt->id);
-			if (lt->key) {
-				id_clear_lib_data(bmain, &lt->key->id);
-			}
 			BKE_id_expand_local(&lt->id);
 		}
 		else {
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index f570066..37f64ba 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -1470,6 +1470,7 @@ bool new_id(ListBase *lb, ID *id, const char *tname)
 void id_clear_lib_data_ex(Main *bmain, ID *id, bool id_in_mainlist)
 {
 	bNodeTree *ntree = NULL;
+	Key *key = NULL;
 
 	BKE_id_lib_local_paths(bmain, id->lib, id);
 
@@ -1480,13 +1481,16 @@ void id_clear_lib_data_ex(Main *bmain, ID *id, bool id_in_mainlist)
 	if (id_in_mainlist)
 		new_id(which_libbase(bmain, GS(id->name)), id, NULL);
 
-	/* internal bNodeTree blocks inside ID types below
-	 * also stores id->lib, make sure this stays in sync.
-	 */
+	/* Internal bNodeTree blocks inside datablocks also stores id->lib, make sure this stays in sync. */
 	if ((ntree = ntreeFromID(id))) {
 		id_clear_lib_data_ex(bmain, &ntree->id, id_in_mainlist);
 	}
 
+	/* Same goes for shapekeys. */
+	if ((key = BKE_key_from_id(id))) {
+		id_clear_lib_data_ex(bmain, &key->id, id_in_mainlist);
+	}
+
 	if (GS(id->name) == ID_OB) {
 		Object *object = (Object *)id;
 		if (object->proxy_from != NULL) {
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index db15dc1..ea9fa57 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -573,9 +573,6 @@ void BKE_mesh_make_local(Main *bmain, Mesh *me, const bool force_local)
 	if (force_local || is_local) {
 		if (!is_lib) {
 			id_clear_lib_data(bmain, &me->id);
-			if (me->key) {
-				id_clear_lib_data(bmain, &me->key->id);
-			}
 			BKE_id_expand_local(&me->id);
 		}
 		else {




More information about the Bf-blender-cvs mailing list