[Bf-blender-cvs] [d3e0d7f0825] blender2.8: Fix broken particle distribution after recent fix

Sergey Sharybin noreply at git.blender.org
Fri Dec 14 17:33:59 CET 2018


Commit: d3e0d7f0825fbdf503ef82e3f85b11d0faf841e8
Author: Sergey Sharybin
Date:   Fri Dec 14 17:33:36 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBd3e0d7f0825fbdf503ef82e3f85b11d0faf841e8

Fix broken particle distribution after recent fix

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

M	source/blender/blenkernel/BKE_library.h
M	source/blender/blenkernel/intern/library.c
M	source/blender/blenkernel/intern/mesh.c
M	source/blender/blenkernel/intern/particle_distribute.c
M	source/blender/modifiers/intern/MOD_util.c

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

diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h
index a4eb40cbb38..946cd23843d 100644
--- a/source/blender/blenkernel/BKE_library.h
+++ b/source/blender/blenkernel/BKE_library.h
@@ -81,6 +81,7 @@ enum {
 	LIB_ID_COPY_CACHES             = 1 << 18,  /* Copy runtime data caches. */
 	LIB_ID_COPY_NO_ANIMDATA        = 1 << 19,  /* Don't copy id->adt, used by ID datablock localization routines. */
 	LIB_ID_COPY_CD_REFERENCE       = 1 << 20,  /* Mesh: Reference CD data layers instead of doing real copy. */
+	LIB_ID_COPY_RUNTIME            = 1 << 21,  /* Copy ID's runtime field (for example. object->runtime). */
 
 	/* XXX Hackish/not-so-nice specific behaviors needed for some corner cases.
 	 *     Ideally we should not have those, but we need them for now... */
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index 23d431b9325..84585d3bd64 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -518,13 +518,14 @@ static int id_copy_libmanagement_cb(void *user_data, ID *UNUSED(id_self), ID **i
 	return IDWALK_RET_NOP;
 }
 
-static void id_copy_clear_runtime_if_needed(ID *id, int UNUSED(flag))
+static void id_copy_clear_runtime_if_needed(ID *id, int flag)
 {
 	if (id == NULL) {
 		return;
 	}
-	/* TODO(sergey): Think of having a flag which will allow to share runtime
-	 * fields of the ID.*/
+	if (flag & LIB_ID_COPY_RUNTIME) {
+		return;
+	}
 	switch ((ID_Type)GS(id->name)) {
 		case ID_OB:
 		{
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 635032d15a4..2f198c5b565 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -701,7 +701,8 @@ Mesh *BKE_mesh_copy_for_eval(struct Mesh *source, bool reference)
 	int flags = (LIB_ID_CREATE_NO_MAIN |
 	             LIB_ID_CREATE_NO_USER_REFCOUNT |
 	             LIB_ID_CREATE_NO_DEG_TAG |
-	             LIB_ID_COPY_NO_PREVIEW);
+	             LIB_ID_COPY_NO_PREVIEW |
+	             LIB_ID_COPY_RUNTIME);
 
 	if (reference) {
 		flags |= LIB_ID_COPY_CD_REFERENCE;
diff --git a/source/blender/blenkernel/intern/particle_distribute.c b/source/blender/blenkernel/intern/particle_distribute.c
index bbb8a96dd4d..90d3caa2639 100644
--- a/source/blender/blenkernel/intern/particle_distribute.c
+++ b/source/blender/blenkernel/intern/particle_distribute.c
@@ -925,7 +925,8 @@ static int psys_thread_context_init_distribute(ParticleThreadContext *ctx, Parti
 			            LIB_ID_CREATE_NO_MAIN |
 			            LIB_ID_CREATE_NO_USER_REFCOUNT |
 			            LIB_ID_CREATE_NO_DEG_TAG |
-			            LIB_ID_COPY_NO_PREVIEW,
+			            LIB_ID_COPY_NO_PREVIEW |
+			            LIB_ID_COPY_RUNTIME,
 			            false);
 
 		BKE_mesh_tessface_ensure(mesh);
diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c
index dca2d536a5d..63dfacf391f 100644
--- a/source/blender/modifiers/intern/MOD_util.c
+++ b/source/blender/modifiers/intern/MOD_util.c
@@ -198,7 +198,8 @@ Mesh *MOD_deform_mesh_eval_get(
 			         LIB_ID_CREATE_NO_USER_REFCOUNT |
 			         LIB_ID_CREATE_NO_DEG_TAG |
 			         LIB_ID_COPY_NO_PREVIEW |
-			         LIB_ID_COPY_CD_REFERENCE),
+			         LIB_ID_COPY_CD_REFERENCE |
+			         LIB_ID_COPY_RUNTIME),
 			        false);
 			mesh->runtime.deformed_only = 1;
 		}



More information about the Bf-blender-cvs mailing list