Modifiers: add 'cd_flag' parameter to their ID looping callbacks, needed
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 8 Oct 2015 12:21:11 +0000 (14:21 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 8 Oct 2015 13:05:37 +0000 (15:05 +0200)
since some IDs (objects) are not 'refcounted' while others (textures) are...

Partial merge from id-remap branch.

33 files changed:
source/blender/blenkernel/BKE_modifier.h
source/blender/blenkernel/intern/depsgraph.c
source/blender/blenkernel/intern/library_query.c
source/blender/blenkernel/intern/modifier.c
source/blender/blenkernel/intern/object.c
source/blender/blenloader/intern/readfile.c
source/blender/modifiers/intern/MOD_armature.c
source/blender/modifiers/intern/MOD_array.c
source/blender/modifiers/intern/MOD_boolean.c
source/blender/modifiers/intern/MOD_cast.c
source/blender/modifiers/intern/MOD_cloth.c
source/blender/modifiers/intern/MOD_curve.c
source/blender/modifiers/intern/MOD_datatransfer.c
source/blender/modifiers/intern/MOD_displace.c
source/blender/modifiers/intern/MOD_dynamicpaint.c
source/blender/modifiers/intern/MOD_hook.c
source/blender/modifiers/intern/MOD_lattice.c
source/blender/modifiers/intern/MOD_mask.c
source/blender/modifiers/intern/MOD_meshdeform.c
source/blender/modifiers/intern/MOD_mirror.c
source/blender/modifiers/intern/MOD_normal_edit.c
source/blender/modifiers/intern/MOD_particleinstance.c
source/blender/modifiers/intern/MOD_screw.c
source/blender/modifiers/intern/MOD_shrinkwrap.c
source/blender/modifiers/intern/MOD_simpledeform.c
source/blender/modifiers/intern/MOD_smoke.c
source/blender/modifiers/intern/MOD_uvproject.c
source/blender/modifiers/intern/MOD_uvwarp.c
source/blender/modifiers/intern/MOD_warp.c
source/blender/modifiers/intern/MOD_wave.c
source/blender/modifiers/intern/MOD_weightvgedit.c
source/blender/modifiers/intern/MOD_weightvgmix.c
source/blender/modifiers/intern/MOD_weightvgproximity.c

index 05167e29050e9db4244367b3dd82dabd6817b720..455912ab819c32dc1e3c9ae78e254ac35a6015dc 100644 (file)
@@ -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 {
index 80e5231626fa857c9f8667cd2879069672e63e42..42b6b311dffa78b0130d9caac4cd6fb14416ca0a 100644 (file)
@@ -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;
        
index b59d0cf5b6d25b7dfed048134bbda0115c33038b..75ba68686c76c3ad30858a6afd1918baa29701a5 100644 (file)
@@ -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);
index b2c0c6d6d0a23cbaff265d4aaa9b1e0f4ef570f7..716da14cae6bcd0fee5e6ebba66d90ffb7cf6faa 100644 (file)
@@ -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;
 
index fb4b0a99d0a103066c02d32c0416bd9a0bf37d5f..ed841770204144c0e4f6a9ef2bda36990b0b1f13 100644 (file)
@@ -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 */
index 9ee99c155d582ebc26641c017bf4c3402c30ecd6..b8bdbe594a3de1224a23442b94df7d453425dbf4 100644 (file)
 #include "BKE_global.h" // for G
 #include "BKE_group.h"
 #include "BKE_library.h" // for which_libbase
+#include "BKE_library_query.h"
 #include "BKE_idcode.h"
 #include "BKE_material.h"
 #include "BKE_main.h" // for Main
@@ -4589,15 +4590,15 @@ static void direct_link_latt(FileData *fd, Lattice *lt)
 
 /* ************ READ OBJECT ***************** */
 
-static void lib_link_modifiers__linkModifiers(void *userData, Object *ob,
-                                              ID **idpoin)
+static void lib_link_modifiers__linkModifiers(
+        void *userData, Object *ob, ID **idpoin, int cd_flag)
 {
        FileData *fd = userData;
 
        *idpoin = newlibadr(fd, ob->id.lib, *idpoin);
-       /* hardcoded bad exception; non-object modifier data gets user count (texture, displace) */
-       if (*idpoin && GS((*idpoin)->name)!=ID_OB)
+       if (cd_flag & IDWALK_USER) {
                (*idpoin)->us++;
+       }
 }
 static void lib_link_modifiers(FileData *fd, Object *ob)
 {
@@ -8999,8 +9000,8 @@ static void expand_armature(FileData *fd, Main *mainvar, bArmature *arm)
 #endif
 }
 
-static void expand_object_expandModifiers(void *userData, Object *UNUSED(ob),
-                                          ID **idpoin)
+static void expand_object_expandModifiers(
+        void *userData, Object *UNUSED(ob), ID **idpoin, int UNUSED(cd_flag))
 {
        struct { FileData *fd; Main *mainvar; } *data= userData;
        
index 2ecbf276fc80bb6d5899411b8b03c9292fb091e5..d9ace45453cf795ec5938cbc37a2a12c8bd91068 100644 (file)
@@ -45,6 +45,7 @@
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_lattice.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 
 #include "MEM_guardedalloc.h"
@@ -95,7 +96,7 @@ static void foreachObjectLink(
 {
        ArmatureModifierData *amd = (ArmatureModifierData *) md;
 
-       walk(userData, ob, &amd->object);
+       walk(userData, ob, &amd->object, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index 1cbbdaf3b23d445072a3dd9308fe373847efcaf0..15a7e51e8652b8f280d2e9cc162d1ce2729607c3 100644 (file)
@@ -48,6 +48,7 @@
 #include "BKE_cdderivedmesh.h"
 #include "BKE_displist.h"
 #include "BKE_curve.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 
 #include "MOD_util.h"
@@ -94,10 +95,10 @@ static void foreachObjectLink(
 {
        ArrayModifierData *amd = (ArrayModifierData *) md;
 
-       walk(userData, ob, &amd->start_cap);
-       walk(userData, ob, &amd->end_cap);
-       walk(userData, ob, &amd->curve_ob);
-       walk(userData, ob, &amd->offset_ob);
+       walk(userData, ob, &amd->start_cap, IDWALK_NOP);
+       walk(userData, ob, &amd->end_cap, IDWALK_NOP);
+       walk(userData, ob, &amd->curve_ob, IDWALK_NOP);
+       walk(userData, ob, &amd->offset_ob, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index b2b2a18bb2680ab8149d199506372170e2123a32..3fd2c8a3502ad484c27c9908498cf8477d4f182e 100644 (file)
@@ -40,6 +40,7 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_cdderivedmesh.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 
 #include "depsgraph_private.h"
@@ -69,7 +70,7 @@ static void foreachObjectLink(
 {
        BooleanModifierData *bmd = (BooleanModifierData *) md;
 
-       walk(userData, ob, &bmd->object);
+       walk(userData, ob, &bmd->object, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index 5c3b40b5d0ee414392d3509ba9e0bcc2bfd43d41..32c3d41c4b628b0154b4952608fe92dc03a17108 100644 (file)
@@ -42,6 +42,7 @@
 
 #include "BKE_deform.h"
 #include "BKE_DerivedMesh.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 
 
@@ -101,7 +102,7 @@ static void foreachObjectLink(
 {
        CastModifierData *cmd = (CastModifierData *) md;
 
-       walk(userData, ob, &cmd->object);
+       walk(userData, ob, &cmd->object, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index dac0e516e0d4f858ee732e15d9056fbdd2e293e6..6cc2f097be8f0f1bef779ca83e5ba1b62ae52088 100644 (file)
@@ -49,6 +49,7 @@
 #include "BKE_effect.h"
 #include "BKE_global.h"
 #include "BKE_key.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_pointcache.h"
 
@@ -241,11 +242,11 @@ static void foreachIDLink(ModifierData *md, Object *ob,
        ClothModifierData *clmd = (ClothModifierData *) md;
 
        if (clmd->coll_parms) {
-               walk(userData, ob, (ID **)&clmd->coll_parms->group);
+               walk(userData, ob, (ID **)&clmd->coll_parms->group, IDWALK_NOP);
        }
 
        if (clmd->sim_parms && clmd->sim_parms->effector_weights) {
-               walk(userData, ob, (ID **)&clmd->sim_parms->effector_weights->group);
+               walk(userData, ob, (ID **)&clmd->sim_parms->effector_weights->group, IDWALK_NOP);
        }
 }
 
index 15e81ef508e62d52efe348cbe8a9bc88fbe12dc9..6e2d746c8585526f3b871b552160da4ee11b10d5 100644 (file)
@@ -42,6 +42,7 @@
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_lattice.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 
 #include "depsgraph_private.h"
@@ -88,7 +89,7 @@ static void foreachObjectLink(
 {
        CurveModifierData *cmd = (CurveModifierData *) md;
 
-       walk(userData, ob, &cmd->object);
+       walk(userData, ob, &cmd->object, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index 0ce97760afb409932c210a3daf9b7b2a8df79b58..f5ab28d3d8835238430fd137714d8b951ac3268a 100644 (file)
@@ -41,6 +41,7 @@
 #include "BKE_data_transfer.h"
 #include "BKE_DerivedMesh.h"
 #include "BKE_library.h"
+#include "BKE_library_query.h"
 #include "BKE_mesh_mapping.h"
 #include "BKE_mesh_remap.h"
 #include "BKE_modifier.h"
@@ -123,7 +124,7 @@ static void foreachObjectLink(
         ObjectWalkFunc walk, void *userData)
 {
        DataTransferModifierData *dtmd = (DataTransferModifierData *) md;
-       walk(userData, ob, &dtmd->ob_source);
+       walk(userData, ob, &dtmd->ob_source, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index b20d7d8a3a90a7b78bcad3651ce7d810128ee14e..9ba2d214d501c995b3b8b3d985e79f445c53d352 100644 (file)
@@ -41,6 +41,7 @@
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_library.h"
+#include "BKE_library_query.h"
 #include "BKE_mesh.h"
 #include "BKE_modifier.h"
 #include "BKE_texture.h"
@@ -129,7 +130,7 @@ static void foreachObjectLink(ModifierData *md, Object *ob,
 {
        DisplaceModifierData *dmd = (DisplaceModifierData *) md;
 
-       walk(userData, ob, &dmd->map_object);
+       walk(userData, ob, &dmd->map_object, IDWALK_NOP);
 }
 
 static void foreachIDLink(ModifierData *md, Object *ob,
@@ -137,7 +138,7 @@ static void foreachIDLink(ModifierData *md, Object *ob,
 {
        DisplaceModifierData *dmd = (DisplaceModifierData *) md;
 
-       walk(userData, ob, (ID **)&dmd->texture);
+       walk(userData, ob, (ID **)&dmd->texture, IDWALK_USER);
 
        foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
 }
index f1b6ceb070c69d8543fd894ea5319a757eae060b..91af9659d797161e922897a01c520a584a8a97a9 100644 (file)
@@ -35,6 +35,7 @@
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_dynamicpaint.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 
 #include "depsgraph_private.h"
@@ -170,12 +171,12 @@ static void foreachIDLink(ModifierData *md, Object *ob,
                DynamicPaintSurface *surface = pmd->canvas->surfaces.first;
 
                for (; surface; surface = surface->next) {
-                       walk(userData, ob, (ID **)&surface->brush_group);
-                       walk(userData, ob, (ID **)&surface->init_texture);
+                       walk(userData, ob, (ID **)&surface->brush_group, IDWALK_NOP);
+                       walk(userData, ob, (ID **)&surface->init_texture, IDWALK_USER);
                }
        }
        if (pmd->brush) {
-               walk(userData, ob, (ID **)&pmd->brush->mat);
+               walk(userData, ob, (ID **)&pmd->brush->mat, IDWALK_USER);
        }
 }
 
index b043fa8fc628f27746d9e97073aaa51045d01e9a..1a27202fb34ca52dd9b2466b0422837b81512382 100644 (file)
@@ -41,6 +41,7 @@
 
 #include "BKE_action.h"
 #include "BKE_cdderivedmesh.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_deform.h"
 #include "BKE_colortools.h"
@@ -107,7 +108,7 @@ static void foreachObjectLink(
 {
        HookModifierData *hmd = (HookModifierData *) md;
 
-       walk(userData, ob, &hmd->object);
+       walk(userData, ob, &hmd->object, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index 3c5406a8adb6ff1c4410ec2ab473c94244c3b6fc..0f49ce6cfbfc521ab2cd82470ca7ba4818d76e82 100644 (file)
@@ -41,6 +41,7 @@
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_lattice.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 
 #include "depsgraph_private.h"
@@ -87,7 +88,7 @@ static void foreachObjectLink(
 {
        LatticeModifierData *lmd = (LatticeModifierData *) md;
 
-       walk(userData, ob, &lmd->object);
+       walk(userData, ob, &lmd->object, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index 33ded72aaeb91d193bbd347159a45e762c2a4d49..5e01a20d93b70334477769ed6e5109b3ee3a5d01 100644 (file)
@@ -46,6 +46,7 @@
 
 #include "BKE_action.h" /* BKE_pose_channel_find_name */
 #include "BKE_cdderivedmesh.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_deform.h"
 
@@ -73,7 +74,7 @@ static void foreachObjectLink(
         ObjectWalkFunc walk, void *userData)
 {
        MaskModifierData *mmd = (MaskModifierData *)md;
-       walk(userData, ob, &mmd->ob_arm);
+       walk(userData, ob, &mmd->ob_arm, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index 152b89e47a39cb027f3e4d7ea7916216a4763fec..8aa5f281f56b7e36a8e96159d41390122538230c 100644 (file)
@@ -42,6 +42,7 @@
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_global.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_deform.h"
 #include "BKE_editmesh.h"
@@ -118,7 +119,7 @@ static void foreachObjectLink(
 {
        MeshDeformModifierData *mmd = (MeshDeformModifierData *) md;
 
-       walk(userData, ob, &mmd->object);
+       walk(userData, ob, &mmd->object, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index af6a5db1f35206b2eb4f17829659dede70823e51..88facb22e0eecfcffeecd00838e72ace12ad394e 100644 (file)
@@ -39,6 +39,7 @@
 #include "BLI_math.h"
 
 #include "BKE_cdderivedmesh.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_deform.h"
 
@@ -71,7 +72,7 @@ static void foreachObjectLink(
 {
        MirrorModifierData *mmd = (MirrorModifierData *) md;
 
-       walk(userData, ob, &mmd->mirror_ob);
+       walk(userData, ob, &mmd->mirror_ob, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index 3a0606f35b6ecde69a58e49c373cfcf59d3278e3..2eccefcc8dff596e81dde27eb94323812a2c8902 100644 (file)
@@ -38,6 +38,7 @@
 #include "BLI_bitmap.h"
 
 #include "BKE_cdderivedmesh.h"
+#include "BKE_library_query.h"
 #include "BKE_mesh.h"
 #include "BKE_deform.h"
 
@@ -450,7 +451,7 @@ static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk,
 {
        NormalEditModifierData *smd = (NormalEditModifierData *) md;
 
-       walk(userData, ob, &smd->target);
+       walk(userData, ob, &smd->target, IDWALK_NOP);
 }
 
 static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
index cb6234d50b7dd954c65448347ed00a0fad113c46..289611ad90aab8bac693d58ab3f459742915115c 100644 (file)
@@ -46,6 +46,7 @@
 #include "BKE_effect.h"
 #include "BKE_global.h"
 #include "BKE_lattice.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_particle.h"
 #include "BKE_pointcache.h"
@@ -144,7 +145,7 @@ static void foreachObjectLink(ModifierData *md, Object *ob,
 {
        ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md;
 
-       walk(userData, ob, &pimd->ob);
+       walk(userData, ob, &pimd->ob, IDWALK_NOP);
 }
 
 static int particle_skip(ParticleInstanceModifierData *pimd, ParticleSystem *psys, int p)
index 386b2179c6386d79e02ab9ddaa04b92f9c43604c..41ebd86572097e075cbe25e6f2b2f141dd2df5bb 100644 (file)
@@ -44,6 +44,7 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_cdderivedmesh.h"
+#include "BKE_library_query.h"
 
 #include "depsgraph_private.h"
 #include "DEG_depsgraph_build.h"
@@ -1094,7 +1095,7 @@ static void foreachObjectLink(
 {
        ScrewModifierData *ltmd = (ScrewModifierData *) md;
 
-       walk(userData, ob, &ltmd->ob_axis);
+       walk(userData, ob, &ltmd->ob_axis, IDWALK_NOP);
 }
 
 ModifierTypeInfo modifierType_Screw = {
index 91be0c40059b9a9f46290b29869d68e79d7fcf6b..a9919cadd167f778dc7f4f41115cdaf94a481c2e 100644 (file)
@@ -41,6 +41,7 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_cdderivedmesh.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_shrinkwrap.h"
 
@@ -100,8 +101,8 @@ static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk,
 {
        ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *) md;
 
-       walk(userData, ob, &smd->target);
-       walk(userData, ob, &smd->auxTarget);
+       walk(userData, ob, &smd->target, IDWALK_NOP);
+       walk(userData, ob, &smd->auxTarget, IDWALK_NOP);
 }
 
 static void deformVerts(ModifierData *md, Object *ob,
index 22a19cf77a87173168a8f3c7c63ae13fc2e87468..f4fbfa7407657be3702e6c83b6491ff004faeae3 100644 (file)
@@ -40,6 +40,7 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_cdderivedmesh.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_deform.h"
 
@@ -284,7 +285,7 @@ static void foreachObjectLink(
         ObjectWalkFunc walk, void *userData)
 {
        SimpleDeformModifierData *smd  = (SimpleDeformModifierData *)md;
-       walk(userData, ob, &smd->origin);
+       walk(userData, ob, &smd->origin, IDWALK_NOP);
 }
 
 static void updateDepgraph(ModifierData *md, DagForest *forest,
index 657c4e09d96eb521bfe4dcc18314e9b94f43c7d5..f0f235c8ad5b8271a0ca6edc5ea9e3d1669c8475 100644 (file)
@@ -48,6 +48,7 @@
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_library.h"
+#include "BKE_library_query.h"
 #include "BKE_main.h"
 #include "BKE_modifier.h"
 #include "BKE_smoke.h"
@@ -339,17 +340,17 @@ static void foreachIDLink(ModifierData *md, Object *ob,
        SmokeModifierData *smd = (SmokeModifierData *) md;
 
        if (smd->type == MOD_SMOKE_TYPE_DOMAIN && smd->domain) {
-               walk(userData, ob, (ID **)&smd->domain->coll_group);
-               walk(userData, ob, (ID **)&smd->domain->fluid_group);
-               walk(userData, ob, (ID **)&smd->domain->eff_group);
+               walk(userData, ob, (ID **)&smd->domain->coll_group, IDWALK_NOP);
+               walk(userData, ob, (ID **)&smd->domain->fluid_group, IDWALK_NOP);
+               walk(userData, ob, (ID **)&smd->domain->eff_group, IDWALK_NOP);
 
                if (smd->domain->effector_weights) {
-                       walk(userData, ob, (ID **)&smd->domain->effector_weights->group);
+                       walk(userData, ob, (ID **)&smd->domain->effector_weights->group, IDWALK_NOP);
                }
        }
 
        if (smd->type == MOD_SMOKE_TYPE_FLOW && smd->flow) {
-               walk(userData, ob, (ID **)&smd->flow->noise_texture);
+               walk(userData, ob, (ID **)&smd->flow->noise_texture, IDWALK_USER);
        }
 }
 
index 035bda66f6e8c0cc01da929c21d4bf7df006af74..fb7668d16e0dec21706f3059e7734650cde0d258 100644 (file)
@@ -45,6 +45,7 @@
 
 
 #include "BKE_camera.h"
+#include "BKE_library_query.h"
 #include "BKE_mesh.h"
 #include "BKE_DerivedMesh.h"
 
@@ -91,7 +92,7 @@ static void foreachObjectLink(ModifierData *md, Object *ob,
        int i;
 
        for (i = 0; i < MOD_UVPROJECT_MAXPROJECTORS; ++i)
-               walk(userData, ob, &umd->projectors[i]);
+               walk(userData, ob, &umd->projectors[i], IDWALK_NOP);
 }
 
 static void foreachIDLink(ModifierData *md, Object *ob,
@@ -99,7 +100,7 @@ static void foreachIDLink(ModifierData *md, Object *ob,
 {
        UVProjectModifierData *umd = (UVProjectModifierData *) md;
 
-       walk(userData, ob, (ID **)&umd->image);
+       walk(userData, ob, (ID **)&umd->image, IDWALK_USER);
 
        foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
 }
index 3c4ca66485d6293dcace26d86f12143120a02ec2..5418c222d13fa8639429ec3546426586210d3c2c 100644 (file)
@@ -36,6 +36,7 @@
 #include "BKE_action.h"  /* BKE_pose_channel_find_name */
 #include "BKE_cdderivedmesh.h"
 #include "BKE_deform.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 
 #include "depsgraph_private.h"
@@ -200,8 +201,8 @@ static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk,
 {
        UVWarpModifierData *umd = (UVWarpModifierData *) md;
 
-       walk(userData, ob, &umd->object_dst);
-       walk(userData, ob, &umd->object_src);
+       walk(userData, ob, &umd->object_dst, IDWALK_NOP);
+       walk(userData, ob, &umd->object_src, IDWALK_NOP);
 }
 
 static void uv_warp_deps_object_bone(DagForest *forest, DagNode *obNode,
index b364b7a9e382237c26e8568497cf577889370bfa..27d3bac59ec79c3a9d0847b9d19b5bdd1c8b8c83 100644 (file)
@@ -36,6 +36,7 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_cdderivedmesh.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_deform.h"
 #include "BKE_texture.h"
@@ -115,16 +116,16 @@ static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk,
 {
        WarpModifierData *wmd = (WarpModifierData *) md;
 
-       walk(userData, ob, &wmd->object_from);
-       walk(userData, ob, &wmd->object_to);
-       walk(userData, ob, &wmd->map_object);
+       walk(userData, ob, &wmd->object_from, IDWALK_NOP);
+       walk(userData, ob, &wmd->object_to, IDWALK_NOP);
+       walk(userData, ob, &wmd->map_object, IDWALK_NOP);
 }
 
 static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
 {
        WarpModifierData *wmd = (WarpModifierData *) md;
 
-       walk(userData, ob, (ID **)&wmd->texture);
+       walk(userData, ob, (ID **)&wmd->texture, IDWALK_USER);
 
        foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
 }
index 5b98f221489021016d4f020618c6839478ca00c7..f13eeb3185e3a662bb7c3e932f9e87a4e28302ea 100644 (file)
@@ -45,6 +45,7 @@
 #include "BKE_deform.h"
 #include "BKE_DerivedMesh.h"
 #include "BKE_library.h"
+#include "BKE_library_query.h"
 #include "BKE_scene.h"
 #include "BKE_texture.h"
 
@@ -110,8 +111,8 @@ static void foreachObjectLink(
 {
        WaveModifierData *wmd = (WaveModifierData *) md;
 
-       walk(userData, ob, &wmd->objectcenter);
-       walk(userData, ob, &wmd->map_object);
+       walk(userData, ob, &wmd->objectcenter, IDWALK_NOP);
+       walk(userData, ob, &wmd->map_object, IDWALK_NOP);
 }
 
 static void foreachIDLink(ModifierData *md, Object *ob,
@@ -119,7 +120,7 @@ static void foreachIDLink(ModifierData *md, Object *ob,
 {
        WaveModifierData *wmd = (WaveModifierData *) md;
 
-       walk(userData, ob, (ID **)&wmd->texture);
+       walk(userData, ob, (ID **)&wmd->texture, IDWALK_USER);
 
        foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
 }
index 8e40b01e0f8ab0b9629f750cf39c7eedfa318d51..93567aed2c4147eb6c6fa17ae77aa5d5f9f41cba 100644 (file)
@@ -42,6 +42,7 @@
 #include "BKE_colortools.h"       /* CurveMapping. */
 #include "BKE_deform.h"
 #include "BKE_library.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_texture.h"          /* Texture masking. */
 
@@ -125,14 +126,14 @@ static bool dependsOnTime(ModifierData *md)
 static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk, void *userData)
 {
        WeightVGEditModifierData *wmd = (WeightVGEditModifierData *) md;
-       walk(userData, ob, &wmd->mask_tex_map_obj);
+       walk(userData, ob, &wmd->mask_tex_map_obj, IDWALK_NOP);
 }
 
 static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
 {
        WeightVGEditModifierData *wmd = (WeightVGEditModifierData *) md;
 
-       walk(userData, ob, (ID **)&wmd->mask_texture);
+       walk(userData, ob, (ID **)&wmd->mask_texture, IDWALK_USER);
 
        foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
 }
index f4915cd0933dd1e87c25e2bc9e381ea8cc550082..01a219d14577a13a4098a67025aafb24842b8645 100644 (file)
@@ -39,6 +39,7 @@
 #include "BKE_cdderivedmesh.h"
 #include "BKE_deform.h"
 #include "BKE_library.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_texture.h"          /* Texture masking. */
 
@@ -174,14 +175,14 @@ static bool dependsOnTime(ModifierData *md)
 static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk, void *userData)
 {
        WeightVGMixModifierData *wmd = (WeightVGMixModifierData *) md;
-       walk(userData, ob, &wmd->mask_tex_map_obj);
+       walk(userData, ob, &wmd->mask_tex_map_obj, IDWALK_NOP);
 }
 
 static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
 {
        WeightVGMixModifierData *wmd = (WeightVGMixModifierData *) md;
 
-       walk(userData, ob, (ID **)&wmd->mask_texture);
+       walk(userData, ob, (ID **)&wmd->mask_texture, IDWALK_USER);
 
        foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
 }
index 18ce31a265d42ca95d294c00cb6411710ac25973..51c6f5cab3c9f587435ebd840cfd5dc178419cc4 100644 (file)
@@ -42,6 +42,7 @@
 #include "BKE_cdderivedmesh.h"
 #include "BKE_deform.h"
 #include "BKE_library.h"
+#include "BKE_library_query.h"
 #include "BKE_modifier.h"
 #include "BKE_texture.h"          /* Texture masking. */
 
@@ -290,15 +291,15 @@ static bool dependsOnTime(ModifierData *md)
 static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk, void *userData)
 {
        WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *) md;
-       walk(userData, ob, &wmd->proximity_ob_target);
-       walk(userData, ob, &wmd->mask_tex_map_obj);
+       walk(userData, ob, &wmd->proximity_ob_target, IDWALK_NOP);
+       walk(userData, ob, &wmd->mask_tex_map_obj, IDWALK_NOP);
 }
 
 static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
 {
        WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *) md;
 
-       walk(userData, ob, (ID **)&wmd->mask_texture);
+       walk(userData, ob, (ID **)&wmd->mask_texture, IDWALK_USER);
 
        foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
 }