From f375028a2542981732aef6ce4700aa951325e63d Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 8 Oct 2015 14:21:11 +0200 Subject: Modifiers: add 'cd_flag' parameter to their ID looping callbacks, needed since some IDs (objects) are not 'refcounted' while others (textures) are... Partial merge from id-remap branch. --- source/blender/blenkernel/BKE_modifier.h | 4 ++-- source/blender/blenkernel/intern/depsgraph.c | 3 ++- source/blender/blenkernel/intern/library_query.c | 7 +++---- source/blender/blenkernel/intern/modifier.c | 3 +-- source/blender/blenkernel/intern/object.c | 5 ++--- 5 files changed, 10 insertions(+), 12 deletions(-) (limited to 'source/blender/blenkernel') diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h index 05167e29050..455912ab819 100644 --- a/source/blender/blenkernel/BKE_modifier.h +++ b/source/blender/blenkernel/BKE_modifier.h @@ -105,8 +105,8 @@ typedef enum { } ModifierTypeFlag; /* IMPORTANT! Keep ObjectWalkFunc and IDWalkFunc signatures compatible. */ -typedef void (*ObjectWalkFunc)(void *userData, struct Object *ob, struct Object **obpoin); -typedef void (*IDWalkFunc)(void *userData, struct Object *ob, struct ID **idpoin); +typedef void (*ObjectWalkFunc)(void *userData, struct Object *ob, struct Object **obpoin, int cd_flag); +typedef void (*IDWalkFunc)(void *userData, struct Object *ob, struct ID **idpoin, int cd_flag); typedef void (*TexWalkFunc)(void *userData, struct Object *ob, struct ModifierData *md, const char *propname); typedef enum ModifierApplyFlag { diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 80e5231626f..42b6b311dff 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -2520,7 +2520,8 @@ void DAG_on_visible_update(Main *bmain, const bool do_time) } } -static void dag_id_flush_update__isDependentTexture(void *userData, Object *UNUSED(ob), ID **idpoin) +static void dag_id_flush_update__isDependentTexture( + void *userData, Object *UNUSED(ob), ID **idpoin, int UNUSED(cd_flag)) { struct { ID *id; bool is_dependent; } *data = userData; diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c index b59d0cf5b6d..75ba68686c7 100644 --- a/source/blender/blenkernel/intern/library_query.c +++ b/source/blender/blenkernel/intern/library_query.c @@ -103,11 +103,11 @@ typedef struct LibraryForeachIDData { void *user_data; } LibraryForeachIDData; -static void library_foreach_modifiersForeachIDLink(void *user_data, Object *UNUSED(object), - ID **id_pointer) +static void library_foreach_modifiersForeachIDLink( + void *user_data, Object *UNUSED(object), ID **id_pointer, int cd_flag) { LibraryForeachIDData *data = (LibraryForeachIDData *) user_data; - FOREACH_CALLBACK_INVOKE_ID_PP(data->self_id, id_pointer, data->flag, data->callback, data->user_data, IDWALK_NOP); + FOREACH_CALLBACK_INVOKE_ID_PP(data->self_id, id_pointer, data->flag, data->callback, data->user_data, cd_flag); } static void library_foreach_constraintObjectLooper(bConstraint *UNUSED(con), ID **id_pointer, @@ -136,7 +136,6 @@ static void library_foreach_animationData(LibraryForeachIDData *data, AnimData * } } - static void library_foreach_mtex(LibraryForeachIDData *data, MTex *mtex) { FOREACH_CALLBACK_INVOKE(data->self_id, mtex->object, data->flag, data->callback, data->user_data, IDWALK_NOP); diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index b2c0c6d6d0a..716da14cae6 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -215,8 +215,7 @@ void modifiers_clearErrors(Object *ob) } } -void modifiers_foreachObjectLink(Object *ob, ObjectWalkFunc walk, - void *userData) +void modifiers_foreachObjectLink(Object *ob, ObjectWalkFunc walk, void *userData) { ModifierData *md = ob->modifiers.first; diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index fb4b0a99d0a..ed841770204 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -467,7 +467,7 @@ void BKE_object_free(Object *ob) BKE_object_free_ex(ob, true); } -static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Object **obpoin) +static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Object **obpoin, int UNUSED(cd_flag)) { Object *unlinkOb = userData; @@ -1574,8 +1574,7 @@ Object *BKE_object_copy(Object *ob) } static void extern_local_object__modifiersForeachIDLink( - void *UNUSED(userData), Object *UNUSED(ob), - ID **idpoin) + void *UNUSED(userData), Object *UNUSED(ob), ID **idpoin, int UNUSED(cd_flag)) { if (*idpoin) { /* intentionally omit ID_OB */ -- cgit v1.2.3