From 8bb5916183fb25c07dffaa00cfcb8e2863cebe41 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 23 Aug 2023 12:36:56 +0200 Subject: [PATCH] Readfile: Replace the 'expand' specific code by generic usage of foreach_id. The `expand` callback is 'trivial' to replace, since it is only iterating over ID pointers and calling a callback. The only change in behavior here is that some pointers that were not processed previously will now be. In practice this is not expected to have any real effect (usually the IDs used by these pointers would have been expanded through other usages anyway). But it may solve a few corner cases, undocumented issues though. Part of implementing #105134: Removal of readfile's lib_link & expand code. --- source/blender/blenkernel/BKE_action.h | 3 - source/blender/blenkernel/BKE_anim_data.h | 2 - source/blender/blenkernel/BKE_animsys.h | 2 - source/blender/blenkernel/BKE_collection.h | 3 - source/blender/blenkernel/BKE_constraint.h | 2 - source/blender/blenkernel/BKE_fcurve.h | 3 - source/blender/blenkernel/BKE_idprop.h | 2 - source/blender/blenkernel/BKE_idtype.h | 7 -- source/blender/blenkernel/BKE_nla.h | 2 - source/blender/blenkernel/BKE_node.h | 1 - source/blender/blenkernel/BKE_node.hh | 2 - source/blender/blenkernel/intern/action.cc | 42 ------- source/blender/blenkernel/intern/anim_data.cc | 12 -- source/blender/blenkernel/intern/anim_sys.cc | 9 -- source/blender/blenkernel/intern/armature.cc | 18 --- source/blender/blenkernel/intern/brush.cc | 14 --- source/blender/blenkernel/intern/cachefile.cc | 1 - source/blender/blenkernel/intern/camera.cc | 12 -- .../blender/blenkernel/intern/collection.cc | 18 --- .../blender/blenkernel/intern/constraint.cc | 21 ---- source/blender/blenkernel/intern/curve.cc | 19 --- source/blender/blenkernel/intern/curves.cc | 10 -- source/blender/blenkernel/intern/fcurve.cc | 35 ------ .../blenkernel/intern/gpencil_legacy.cc | 13 --- .../blenkernel/intern/grease_pencil.cc | 17 --- source/blender/blenkernel/intern/idprop.cc | 25 ---- source/blender/blenkernel/intern/image.cc | 1 - source/blender/blenkernel/intern/ipo.cc | 12 -- source/blender/blenkernel/intern/key.cc | 7 -- source/blender/blenkernel/intern/lattice.cc | 8 -- source/blender/blenkernel/intern/lib_id.cc | 1 - source/blender/blenkernel/intern/library.cc | 1 - source/blender/blenkernel/intern/light.cc | 7 -- .../blender/blenkernel/intern/lightprobe.cc | 1 - source/blender/blenkernel/intern/linestyle.cc | 29 ----- source/blender/blenkernel/intern/mask.cc | 23 ---- source/blender/blenkernel/intern/material.cc | 13 --- source/blender/blenkernel/intern/mball.cc | 9 -- source/blender/blenkernel/intern/mesh.cc | 12 -- source/blender/blenkernel/intern/movieclip.cc | 1 - source/blender/blenkernel/intern/nla.cc | 24 ---- source/blender/blenkernel/intern/node.cc | 80 ------------- .../blenkernel/intern/node_tree_interface.cc | 60 ---------- source/blender/blenkernel/intern/object.cc | 109 ------------------ source/blender/blenkernel/intern/paint.cc | 2 - source/blender/blenkernel/intern/particle.cc | 50 -------- .../blender/blenkernel/intern/pointcloud.cc | 9 -- source/blender/blenkernel/intern/scene.cc | 77 ------------- source/blender/blenkernel/intern/screen.cc | 1 - source/blender/blenkernel/intern/sound.cc | 7 -- source/blender/blenkernel/intern/speaker.cc | 7 -- source/blender/blenkernel/intern/text.cc | 1 - source/blender/blenkernel/intern/texture.cc | 8 -- source/blender/blenkernel/intern/vfont.cc | 1 - source/blender/blenkernel/intern/volume.cc | 9 -- source/blender/blenkernel/intern/workspace.cc | 10 -- source/blender/blenkernel/intern/world.cc | 7 -- source/blender/blenloader/BLO_read_write.h | 14 --- source/blender/blenloader/intern/readfile.cc | 103 +++++++---------- .../makesdna/DNA_node_tree_interface_types.h | 2 - source/blender/sequencer/SEQ_sequencer.h | 3 - source/blender/sequencer/intern/sequencer.cc | 34 ------ source/blender/windowmanager/intern/wm.cc | 1 - 63 files changed, 43 insertions(+), 996 deletions(-) diff --git a/source/blender/blenkernel/BKE_action.h b/source/blender/blenkernel/BKE_action.h index 2ff4f4cd2f8..4411b89bc72 100644 --- a/source/blender/blenkernel/BKE_action.h +++ b/source/blender/blenkernel/BKE_action.h @@ -18,7 +18,6 @@ extern "C" { #endif struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct bArmature; @@ -394,8 +393,6 @@ void BKE_pose_blend_read_data(struct BlendDataReader *reader, struct bPose *pose) ATTR_NONNULL(1, 2); void BKE_pose_blend_read_lib(struct BlendLibReader *reader, struct Object *ob, struct bPose *pose) ATTR_NONNULL(1, 2); -void BKE_pose_blend_read_expand(struct BlendExpander *expander, struct bPose *pose) - ATTR_NONNULL(1); /* `action_mirror.cc` */ diff --git a/source/blender/blenkernel/BKE_anim_data.h b/source/blender/blenkernel/BKE_anim_data.h index 52dd8bc688b..9d940b81161 100644 --- a/source/blender/blenkernel/BKE_anim_data.h +++ b/source/blender/blenkernel/BKE_anim_data.h @@ -16,7 +16,6 @@ extern "C" { struct AnimData; struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct ID; @@ -135,7 +134,6 @@ void BKE_animdata_blend_read_data(struct BlendDataReader *reader, struct ID *id) void BKE_animdata_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct AnimData *adt); -void BKE_animdata_blend_read_expand(struct BlendExpander *expander, struct AnimData *adt); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/BKE_animsys.h b/source/blender/blenkernel/BKE_animsys.h index c409fa6421f..030b874a5b6 100644 --- a/source/blender/blenkernel/BKE_animsys.h +++ b/source/blender/blenkernel/BKE_animsys.h @@ -17,7 +17,6 @@ extern "C" { struct AnimData; struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct Depsgraph; @@ -106,7 +105,6 @@ void BKE_keyingsets_blend_read_data(struct BlendDataReader *reader, struct ListB void BKE_keyingsets_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *list); -void BKE_keyingsets_blend_read_expand(struct BlendExpander *expander, struct ListBase *list); /* ************************************* */ /* Path Fixing API */ diff --git a/source/blender/blenkernel/BKE_collection.h b/source/blender/blenkernel/BKE_collection.h index 6d303240c2e..f3ef48484a1 100644 --- a/source/blender/blenkernel/BKE_collection.h +++ b/source/blender/blenkernel/BKE_collection.h @@ -24,7 +24,6 @@ extern "C" { struct BLI_Iterator; struct Base; struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct Collection; @@ -318,8 +317,6 @@ void BKE_collection_blend_read_data(struct BlendDataReader *reader, struct Collection *collection, struct ID *owner_id); void BKE_collection_blend_read_lib(struct BlendLibReader *reader, struct Collection *collection); -void BKE_collection_blend_read_expand(struct BlendExpander *expander, - struct Collection *collection); /* Iteration callbacks. */ diff --git a/source/blender/blenkernel/BKE_constraint.h b/source/blender/blenkernel/BKE_constraint.h index 90237b7f169..c5813d38303 100644 --- a/source/blender/blenkernel/BKE_constraint.h +++ b/source/blender/blenkernel/BKE_constraint.h @@ -9,7 +9,6 @@ */ struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct Depsgraph; @@ -375,7 +374,6 @@ void BKE_constraint_blend_read_data(struct BlendDataReader *reader, void BKE_constraint_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *conlist); -void BKE_constraint_blend_read_expand(struct BlendExpander *expander, struct ListBase *lb); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h index 4210515d235..e2768fe378e 100644 --- a/source/blender/blenkernel/BKE_fcurve.h +++ b/source/blender/blenkernel/BKE_fcurve.h @@ -23,7 +23,6 @@ struct AnimData; struct AnimationEvalContext; struct BezTriple; struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct LibraryForeachIDData; @@ -639,14 +638,12 @@ void BKE_fmodifiers_blend_read_data(struct BlendDataReader *reader, void BKE_fmodifiers_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *fmodifiers); -void BKE_fmodifiers_blend_read_expand(struct BlendExpander *expander, struct ListBase *fmodifiers); void BKE_fcurve_blend_write(struct BlendWriter *writer, struct ListBase *fcurves); void BKE_fcurve_blend_read_data(struct BlendDataReader *reader, struct ListBase *fcurves); void BKE_fcurve_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *fcurves); -void BKE_fcurve_blend_read_expand(struct BlendExpander *expander, struct ListBase *fcurves); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/BKE_idprop.h b/source/blender/blenkernel/BKE_idprop.h index 209ea398538..c094366c7f3 100644 --- a/source/blender/blenkernel/BKE_idprop.h +++ b/source/blender/blenkernel/BKE_idprop.h @@ -16,7 +16,6 @@ extern "C" { #endif struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct ID; @@ -316,7 +315,6 @@ void IDP_BlendReadData_impl(struct BlendDataReader *reader, const char *caller_func_id); #define IDP_BlendDataRead(reader, prop) IDP_BlendReadData_impl(reader, prop, __func__) void IDP_BlendReadLib(struct BlendLibReader *reader, struct ID *self_id, struct IDProperty *prop); -void IDP_BlendReadExpand(struct BlendExpander *expander, struct IDProperty *prop); typedef enum eIDPropertyUIDataType { /** Other properties types that don't support RNA UI data. */ diff --git a/source/blender/blenkernel/BKE_idtype.h b/source/blender/blenkernel/BKE_idtype.h index 6e0d14e695e..aeb583fe4a2 100644 --- a/source/blender/blenkernel/BKE_idtype.h +++ b/source/blender/blenkernel/BKE_idtype.h @@ -18,7 +18,6 @@ extern "C" { struct BPathForeachPathData; struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct ID; @@ -102,7 +101,6 @@ typedef void (*IDTypeBlendWriteFunction)(struct BlendWriter *writer, const void *id_address); typedef void (*IDTypeBlendReadDataFunction)(struct BlendDataReader *reader, struct ID *id); typedef void (*IDTypeBlendReadLibFunction)(struct BlendLibReader *reader, struct ID *id); -typedef void (*IDTypeBlendReadExpandFunction)(struct BlendExpander *expander, struct ID *id); typedef void (*IDTypeBlendReadUndoPreserve)(struct BlendLibReader *reader, struct ID *id_new, @@ -211,11 +209,6 @@ typedef struct IDTypeInfo { */ IDTypeBlendReadLibFunction blend_read_lib; - /** - * Specify which other id data blocks should be loaded when the current one is loaded. - */ - IDTypeBlendReadExpandFunction blend_read_expand; - /** * Allow an ID type to preserve some of its data across (memfile) undo steps. * diff --git a/source/blender/blenkernel/BKE_nla.h b/source/blender/blenkernel/BKE_nla.h index c9240a45133..898daa2bc8e 100644 --- a/source/blender/blenkernel/BKE_nla.h +++ b/source/blender/blenkernel/BKE_nla.h @@ -28,7 +28,6 @@ struct Speaker; struct bAction; struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct PointerRNA; @@ -489,7 +488,6 @@ void BKE_nla_blend_read_data(struct BlendDataReader *reader, struct ID *id_owner, struct ListBase *tracks); void BKE_nla_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *tracks); -void BKE_nla_blend_read_expand(struct BlendExpander *expander, struct ListBase *tracks); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index d3789a43ca7..a93fb9a75cf 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -31,7 +31,6 @@ extern "C" { #define MAX_SOCKET 512 struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct FreestyleLineStyle; diff --git a/source/blender/blenkernel/BKE_node.hh b/source/blender/blenkernel/BKE_node.hh index de61d6415a2..78271acef0c 100644 --- a/source/blender/blenkernel/BKE_node.hh +++ b/source/blender/blenkernel/BKE_node.hh @@ -58,8 +58,6 @@ void ntreeLocalMerge(Main *bmain, bNodeTree *localtree, bNodeTree *ntree); void ntreeBlendReadData(BlendDataReader *reader, ID *owner_id, bNodeTree *ntree); void ntreeBlendReadLib(BlendLibReader *reader, bNodeTree *ntree); -void ntreeBlendReadExpand(BlendExpander *expander, bNodeTree *ntree); - /* -------------------------------------------------------------------- */ /** \name Node Tree Interface * \{ */ diff --git a/source/blender/blenkernel/intern/action.cc b/source/blender/blenkernel/intern/action.cc index bb4f893dfb5..da7451c2f88 100644 --- a/source/blender/blenkernel/intern/action.cc +++ b/source/blender/blenkernel/intern/action.cc @@ -263,34 +263,6 @@ static void action_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void blend_read_expand_constraint_channels(BlendExpander *expander, ListBase *chanbase) -{ - LISTBASE_FOREACH (bConstraintChannel *, chan, chanbase) { - BLO_expand(expander, chan->ipo); - } -} - -static void action_blend_read_expand(BlendExpander *expander, ID *id) -{ - bAction *act = (bAction *)id; - - /* XXX deprecated - old animation system -------------- */ - LISTBASE_FOREACH (bActionChannel *, chan, &act->chanbase) { - BLO_expand(expander, chan->ipo); - blend_read_expand_constraint_channels(expander, &chan->constraintChannels); - } - /* --------------------------------------------------- */ - - /* F-Curves in Action */ - BKE_fcurve_blend_read_expand(expander, &act->curves); - - LISTBASE_FOREACH (TimeMarker *, marker, &act->markers) { - if (marker->camera) { - BLO_expand(expander, marker->camera); - } - } -} - static IDProperty *action_asset_type_property(const bAction *action) { const bool is_single_frame = BKE_action_has_single_frame(action); @@ -338,7 +310,6 @@ IDTypeInfo IDType_ID_AC = { /*blend_write*/ action_blend_write, /*blend_read_data*/ action_blend_read_data, /*blend_read_lib*/ action_blend_read_lib, - /*blend_read_expand*/ action_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, @@ -1971,19 +1942,6 @@ void BKE_pose_blend_read_lib(BlendLibReader *reader, Object *ob, bPose *pose) } } -void BKE_pose_blend_read_expand(BlendExpander *expander, bPose *pose) -{ - if (!pose) { - return; - } - - LISTBASE_FOREACH (bPoseChannel *, chan, &pose->chanbase) { - BKE_constraint_blend_read_expand(expander, &chan->constraints); - IDP_BlendReadExpand(expander, chan->prop); - BLO_expand(expander, chan->custom); - } -} - void BKE_action_fcurves_clear(bAction *act) { if (!act) { diff --git a/source/blender/blenkernel/intern/anim_data.cc b/source/blender/blenkernel/intern/anim_data.cc index 23156294999..d75baf5ad98 100644 --- a/source/blender/blenkernel/intern/anim_data.cc +++ b/source/blender/blenkernel/intern/anim_data.cc @@ -1519,15 +1519,3 @@ void BKE_animdata_blend_read_lib(BlendLibReader *reader, ID *id, AnimData *adt) BKE_nla_blend_read_lib(reader, id, &adt->nla_tracks); } -void BKE_animdata_blend_read_expand(BlendExpander *expander, AnimData *adt) -{ - /* own action */ - BLO_expand(expander, adt->action); - BLO_expand(expander, adt->tmpact); - - /* drivers - assume that these F-Curves have driver data to be in this list... */ - BKE_fcurve_blend_read_expand(expander, &adt->drivers); - - /* NLA data - referenced actions. */ - BKE_nla_blend_read_expand(expander, &adt->nla_tracks); -} diff --git a/source/blender/blenkernel/intern/anim_sys.cc b/source/blender/blenkernel/intern/anim_sys.cc index 9d8f607db7b..da962c62500 100644 --- a/source/blender/blenkernel/intern/anim_sys.cc +++ b/source/blender/blenkernel/intern/anim_sys.cc @@ -330,15 +330,6 @@ void BKE_keyingsets_blend_read_lib(BlendLibReader *reader, ID *id, ListBase *lis } } -void BKE_keyingsets_blend_read_expand(BlendExpander *expander, ListBase *list) -{ - LISTBASE_FOREACH (KeyingSet *, ks, list) { - LISTBASE_FOREACH (KS_Path *, ksp, &ks->paths) { - BLO_expand(expander, ksp->id); - } - } -} - /* ***************************************** */ /* Evaluation Data-Setting Backend */ diff --git a/source/blender/blenkernel/intern/armature.cc b/source/blender/blenkernel/intern/armature.cc index c934d5dd08c..c17890e1ecb 100644 --- a/source/blender/blenkernel/intern/armature.cc +++ b/source/blender/blenkernel/intern/armature.cc @@ -279,23 +279,6 @@ static void armature_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void expand_bones(BlendExpander *expander, Bone *bone) -{ - IDP_BlendReadExpand(expander, bone->prop); - - LISTBASE_FOREACH (Bone *, curBone, &bone->childbase) { - expand_bones(expander, curBone); - } -} - -static void armature_blend_read_expand(BlendExpander *expander, ID *id) -{ - bArmature *arm = (bArmature *)id; - LISTBASE_FOREACH (Bone *, curBone, &arm->bonebase) { - expand_bones(expander, curBone); - } -} - IDTypeInfo IDType_ID_AR = { /*id_code*/ ID_AR, /*id_filter*/ FILTER_ID_AR, @@ -319,7 +302,6 @@ IDTypeInfo IDType_ID_AR = { /*blend_write*/ armature_blend_write, /*blend_read_data*/ armature_blend_read_data, /*blend_read_lib*/ armature_blend_read_lib, - /*blend_read_expand*/ armature_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/brush.cc b/source/blender/blenkernel/intern/brush.cc index c4864106320..8daaf47ac70 100644 --- a/source/blender/blenkernel/intern/brush.cc +++ b/source/blender/blenkernel/intern/brush.cc @@ -386,19 +386,6 @@ static void brush_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void brush_blend_read_expand(BlendExpander *expander, ID *id) -{ - Brush *brush = (Brush *)id; - BLO_expand(expander, brush->mtex.tex); - BLO_expand(expander, brush->mask_mtex.tex); - BLO_expand(expander, brush->clone.image); - BLO_expand(expander, brush->paint_curve); - if (brush->gpencil_settings != nullptr) { - BLO_expand(expander, brush->gpencil_settings->material); - BLO_expand(expander, brush->gpencil_settings->material_alt); - } -} - static int brush_undo_preserve_cb(LibraryIDLinkCallbackData *cb_data) { BlendLibReader *reader = (BlendLibReader *)cb_data->user_data; @@ -455,7 +442,6 @@ IDTypeInfo IDType_ID_BR = { /*blend_write*/ brush_blend_write, /*blend_read_data*/ brush_blend_read_data, /*blend_read_lib*/ brush_blend_read_lib, - /*blend_read_expand*/ brush_blend_read_expand, /*blend_read_undo_preserve*/ brush_undo_preserve, diff --git a/source/blender/blenkernel/intern/cachefile.cc b/source/blender/blenkernel/intern/cachefile.cc index f90b12cf800..a8b20a42c7e 100644 --- a/source/blender/blenkernel/intern/cachefile.cc +++ b/source/blender/blenkernel/intern/cachefile.cc @@ -145,7 +145,6 @@ IDTypeInfo IDType_ID_CF = { /*blend_write*/ cache_file_blend_write, /*blend_read_data*/ cache_file_blend_read_data, /*blend_read_lib*/ nullptr, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/camera.cc b/source/blender/blenkernel/intern/camera.cc index 5e5896132d0..bc6b232fd40 100644 --- a/source/blender/blenkernel/intern/camera.cc +++ b/source/blender/blenkernel/intern/camera.cc @@ -244,17 +244,6 @@ static void camera_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void camera_blend_read_expand(BlendExpander *expander, ID *id) -{ - Camera *ca = (Camera *)id; - BLO_expand(expander, ca->ipo); // XXX deprecated - old animation system - - LISTBASE_FOREACH (CameraBGImage *, bgpic, &ca->bg_images) { - BLO_expand(expander, bgpic->ima); - BLO_expand(expander, bgpic->clip); - } -} - IDTypeInfo IDType_ID_CA = { /*id_code*/ ID_CA, /*id_filter*/ FILTER_ID_CA, @@ -278,7 +267,6 @@ IDTypeInfo IDType_ID_CA = { /*blend_write*/ camera_blend_write, /*blend_read_data*/ camera_blend_read_data, /*blend_read_lib*/ camera_blend_read_lib, - /*blend_read_expand*/ camera_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/collection.cc b/source/blender/blenkernel/intern/collection.cc index ec0d1c293f7..658d34fc19c 100644 --- a/source/blender/blenkernel/intern/collection.cc +++ b/source/blender/blenkernel/intern/collection.cc @@ -331,23 +331,6 @@ static void collection_blend_read_lib(BlendLibReader *reader, ID *id) BKE_collection_blend_read_lib(reader, collection); } -void BKE_collection_blend_read_expand(BlendExpander *expander, Collection *collection) -{ - LISTBASE_FOREACH (CollectionObject *, cob, &collection->gobject) { - BLO_expand(expander, cob->ob); - } - - LISTBASE_FOREACH (CollectionChild *, child, &collection->children) { - BLO_expand(expander, child->collection); - } -} - -static void collection_blend_read_expand(BlendExpander *expander, ID *id) -{ - Collection *collection = (Collection *)id; - BKE_collection_blend_read_expand(expander, collection); -} - IDTypeInfo IDType_ID_GR = { /*id_code*/ ID_GR, /*id_filter*/ FILTER_ID_GR, @@ -371,7 +354,6 @@ IDTypeInfo IDType_ID_GR = { /*blend_write*/ collection_blend_write, /*blend_read_data*/ collection_blend_read_data, /*blend_read_lib*/ collection_blend_read_lib, - /*blend_read_expand*/ collection_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/constraint.cc b/source/blender/blenkernel/intern/constraint.cc index a8b8662759b..a5256d62f4b 100644 --- a/source/blender/blenkernel/intern/constraint.cc +++ b/source/blender/blenkernel/intern/constraint.cc @@ -6595,24 +6595,3 @@ void BKE_constraint_blend_read_lib(BlendLibReader *reader, ID *id, ListBase *con BKE_constraints_id_loop(conlist, lib_link_constraint_cb, IDWALK_NOP, &cld); } -/* callback function used to expand constraint ID-links */ -static void expand_constraint_cb(bConstraint * /*con*/, - ID **idpoin, - bool /*is_reference*/, - void *userdata) -{ - BlendExpander *expander = static_cast(userdata); - BLO_expand(expander, *idpoin); -} - -void BKE_constraint_blend_read_expand(BlendExpander *expander, ListBase *lb) -{ - BKE_constraints_id_loop(lb, expand_constraint_cb, IDWALK_NOP, expander); - - /* deprecated manual expansion stuff */ - LISTBASE_FOREACH (bConstraint *, curcon, lb) { - if (curcon->ipo) { - BLO_expand(expander, curcon->ipo); /* XXX deprecated - old animation system */ - } - } -} diff --git a/source/blender/blenkernel/intern/curve.cc b/source/blender/blenkernel/intern/curve.cc index b03f309f32c..57d178df169 100644 --- a/source/blender/blenkernel/intern/curve.cc +++ b/source/blender/blenkernel/intern/curve.cc @@ -291,24 +291,6 @@ static void curve_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &cu->key); } -static void curve_blend_read_expand(BlendExpander *expander, ID *id) -{ - Curve *cu = (Curve *)id; - for (int a = 0; a < cu->totcol; a++) { - BLO_expand(expander, cu->mat[a]); - } - - BLO_expand(expander, cu->vfont); - BLO_expand(expander, cu->vfontb); - BLO_expand(expander, cu->vfonti); - BLO_expand(expander, cu->vfontbi); - BLO_expand(expander, cu->key); - BLO_expand(expander, cu->ipo); /* XXX deprecated - old animation system */ - BLO_expand(expander, cu->bevobj); - BLO_expand(expander, cu->taperobj); - BLO_expand(expander, cu->textoncurve); -} - IDTypeInfo IDType_ID_CU_LEGACY = { /*id_code*/ ID_CU_LEGACY, /*id_filter*/ FILTER_ID_CU_LEGACY, @@ -332,7 +314,6 @@ IDTypeInfo IDType_ID_CU_LEGACY = { /*blend_write*/ curve_blend_write, /*blend_read_data*/ curve_blend_read_data, /*blend_read_lib*/ curve_blend_read_lib, - /*blend_read_expand*/ curve_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/curves.cc b/source/blender/blenkernel/intern/curves.cc index 58372be6290..589c9995e2e 100644 --- a/source/blender/blenkernel/intern/curves.cc +++ b/source/blender/blenkernel/intern/curves.cc @@ -139,15 +139,6 @@ static void curves_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &curves->surface); } -static void curves_blend_read_expand(BlendExpander *expander, ID *id) -{ - Curves *curves = (Curves *)id; - for (int a = 0; a < curves->totcol; a++) { - BLO_expand(expander, curves->mat[a]); - } - BLO_expand(expander, curves->surface); -} - IDTypeInfo IDType_ID_CV = { /*id_code*/ ID_CV, /*id_filter*/ FILTER_ID_CV, @@ -171,7 +162,6 @@ IDTypeInfo IDType_ID_CV = { /*blend_write*/ curves_blend_write, /*blend_read_data*/ curves_blend_read_data, /*blend_read_lib*/ curves_blend_read_lib, - /*blend_read_expand*/ curves_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/fcurve.cc b/source/blender/blenkernel/intern/fcurve.cc index d672105961c..60ab013b9fe 100644 --- a/source/blender/blenkernel/intern/fcurve.cc +++ b/source/blender/blenkernel/intern/fcurve.cc @@ -2521,20 +2521,6 @@ void BKE_fmodifiers_blend_read_lib(BlendLibReader *reader, ID *id, ListBase *fmo } } -void BKE_fmodifiers_blend_read_expand(BlendExpander *expander, ListBase *fmodifiers) -{ - LISTBASE_FOREACH (FModifier *, fcm, fmodifiers) { - /* library data for specific F-Modifier types */ - switch (fcm->type) { - case FMODIFIER_TYPE_PYTHON: { - FMod_Python *data = (FMod_Python *)fcm->data; - BLO_expand(expander, data->script); - break; - } - } - } -} - void BKE_fcurve_blend_write(BlendWriter *writer, ListBase *fcurves) { BLO_write_struct_list(writer, FCurve, fcurves); @@ -2654,25 +2640,4 @@ void BKE_fcurve_blend_read_lib(BlendLibReader *reader, ID *id, ListBase *fcurves } } -void BKE_fcurve_blend_read_expand(BlendExpander *expander, ListBase *fcurves) -{ - LISTBASE_FOREACH (FCurve *, fcu, fcurves) { - /* Driver targets if there is a driver */ - if (fcu->driver) { - ChannelDriver *driver = fcu->driver; - - LISTBASE_FOREACH (DriverVar *, dvar, &driver->variables) { - DRIVER_TARGETS_LOOPER_BEGIN (dvar) { - /* TODO: only expand those that are going to get used? */ - BLO_expand(expander, dtar->id); - } - DRIVER_TARGETS_LOOPER_END; - } - } - - /* F-Curve Modifiers */ - BKE_fmodifiers_blend_read_expand(expander, &fcu->modifiers); - } -} - /** \} */ diff --git a/source/blender/blenkernel/intern/gpencil_legacy.cc b/source/blender/blenkernel/intern/gpencil_legacy.cc index 3b1d5046d6a..47798b66d79 100644 --- a/source/blender/blenkernel/intern/gpencil_legacy.cc +++ b/source/blender/blenkernel/intern/gpencil_legacy.cc @@ -279,18 +279,6 @@ static void greasepencil_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void greasepencil_blend_read_expand(BlendExpander *expander, ID *id) -{ - bGPdata *gpd = (bGPdata *)id; - LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) { - BLO_expand(expander, gpl->parent); - } - - for (int a = 0; a < gpd->totcol; a++) { - BLO_expand(expander, gpd->mat[a]); - } -} - IDTypeInfo IDType_ID_GD_LEGACY = { /*id_code*/ ID_GD_LEGACY, /*id_filter*/ FILTER_ID_GD_LEGACY, @@ -314,7 +302,6 @@ IDTypeInfo IDType_ID_GD_LEGACY = { /*blend_write*/ greasepencil_blend_write, /*blend_read_data*/ greasepencil_blend_read_data, /*blend_read_lib*/ greasepencil_blend_read_lib, - /*blend_read_expand*/ greasepencil_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/grease_pencil.cc b/source/blender/blenkernel/intern/grease_pencil.cc index 9f3afb07cb0..dd654403f5e 100644 --- a/source/blender/blenkernel/intern/grease_pencil.cc +++ b/source/blender/blenkernel/intern/grease_pencil.cc @@ -208,22 +208,6 @@ static void grease_pencil_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void grease_pencil_blend_read_expand(BlendExpander *expander, ID *id) -{ - GreasePencil *grease_pencil = reinterpret_cast(id); - for (int i = 0; i < grease_pencil->material_array_num; i++) { - BLO_expand(expander, grease_pencil->material_array[i]); - } - for (int i = 0; i < grease_pencil->drawing_array_num; i++) { - GreasePencilDrawingBase *drawing_base = grease_pencil->drawing_array[i]; - if (drawing_base->type == GP_DRAWING_REFERENCE) { - GreasePencilDrawingReference *drawing_reference = - reinterpret_cast(drawing_base); - BLO_expand(expander, drawing_reference->id_reference); - } - } -} - IDTypeInfo IDType_ID_GP = { /*id_code*/ ID_GP, /*id_filter*/ FILTER_ID_GP, @@ -247,7 +231,6 @@ IDTypeInfo IDType_ID_GP = { /*blend_write*/ grease_pencil_blend_write, /*blend_read_data*/ grease_pencil_blend_read_data, /*blend_read_lib*/ grease_pencil_blend_read_lib, - /*blend_read_expand*/ grease_pencil_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/idprop.cc b/source/blender/blenkernel/intern/idprop.cc index 28c9805d324..0a9bf9a7d05 100644 --- a/source/blender/blenkernel/intern/idprop.cc +++ b/source/blender/blenkernel/intern/idprop.cc @@ -1515,31 +1515,6 @@ void IDP_BlendReadLib(BlendLibReader *reader, ID *self_id, IDProperty *prop) } } -void IDP_BlendReadExpand(BlendExpander *expander, IDProperty *prop) -{ - if (!prop) { - return; - } - - switch (prop->type) { - case IDP_ID: - BLO_expand(expander, IDP_Id(prop)); - break; - case IDP_IDPARRAY: { - IDProperty *idp_array = IDP_IDPArray(prop); - for (int i = 0; i < prop->len; i++) { - IDP_BlendReadExpand(expander, &idp_array[i]); - } - break; - } - case IDP_GROUP: - LISTBASE_FOREACH (IDProperty *, loop, &prop->data.group) { - IDP_BlendReadExpand(expander, loop); - } - break; - } -} - eIDPropertyUIDataType IDP_ui_data_type(const IDProperty *prop) { if (prop->type == IDP_STRING) { diff --git a/source/blender/blenkernel/intern/image.cc b/source/blender/blenkernel/intern/image.cc index 21007e20ef6..fbd11accc76 100644 --- a/source/blender/blenkernel/intern/image.cc +++ b/source/blender/blenkernel/intern/image.cc @@ -456,7 +456,6 @@ constexpr IDTypeInfo get_type_info() info.blend_write = image_blend_write; info.blend_read_data = image_blend_read_data; info.blend_read_lib = image_blend_read_lib; - info.blend_read_expand = nullptr; info.blend_read_undo_preserve = nullptr; diff --git a/source/blender/blenkernel/intern/ipo.cc b/source/blender/blenkernel/intern/ipo.cc index a62c12cb5b8..10f0f06912a 100644 --- a/source/blender/blenkernel/intern/ipo.cc +++ b/source/blender/blenkernel/intern/ipo.cc @@ -165,17 +165,6 @@ static void ipo_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void ipo_blend_read_expand(BlendExpander *expander, ID *id) -{ - Ipo *ipo = (Ipo *)id; - - LISTBASE_FOREACH (IpoCurve *, icu, &ipo->curve) { - if (icu->driver) { - BLO_expand(expander, icu->driver->ob); - } - } -} - IDTypeInfo IDType_ID_IP = { /*id_code*/ ID_IP, /*id_filter*/ 0, @@ -199,7 +188,6 @@ IDTypeInfo IDType_ID_IP = { /*blend_write*/ nullptr, /*blend_read_data*/ ipo_blend_read_data, /*blend_read_lib*/ ipo_blend_read_lib, - /*blend_read_expand*/ ipo_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/key.cc b/source/blender/blenkernel/intern/key.cc index 2091af5453a..fd820a0ebc3 100644 --- a/source/blender/blenkernel/intern/key.cc +++ b/source/blender/blenkernel/intern/key.cc @@ -188,12 +188,6 @@ static void shapekey_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &key->from); } -static void shapekey_blend_read_expand(BlendExpander *expander, ID *id) -{ - Key *key = (Key *)id; - BLO_expand(expander, key->ipo); /* XXX deprecated - old animation system */ -} - IDTypeInfo IDType_ID_KE = { /*id_code*/ ID_KE, /*id_filter*/ FILTER_ID_KE, @@ -219,7 +213,6 @@ IDTypeInfo IDType_ID_KE = { /*blend_write*/ shapekey_blend_write, /*blend_read_data*/ shapekey_blend_read_data, /*blend_read_lib*/ shapekey_blend_read_lib, - /*blend_read_expand*/ shapekey_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/lattice.cc b/source/blender/blenkernel/intern/lattice.cc index 39d2baf65ab..0430614707b 100644 --- a/source/blender/blenkernel/intern/lattice.cc +++ b/source/blender/blenkernel/intern/lattice.cc @@ -166,13 +166,6 @@ static void lattice_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, <->key); } -static void lattice_blend_read_expand(BlendExpander *expander, ID *id) -{ - Lattice *lt = (Lattice *)id; - BLO_expand(expander, lt->ipo); // XXX deprecated - old animation system - BLO_expand(expander, lt->key); -} - IDTypeInfo IDType_ID_LT = { /*id_code*/ ID_LT, /*id_filter*/ FILTER_ID_LT, @@ -196,7 +189,6 @@ IDTypeInfo IDType_ID_LT = { /*blend_write*/ lattice_blend_write, /*blend_read_data*/ lattice_blend_read_data, /*blend_read_lib*/ lattice_blend_read_lib, - /*blend_read_expand*/ lattice_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/lib_id.cc b/source/blender/blenkernel/intern/lib_id.cc index 3d259a3a947..a90c0261b78 100644 --- a/source/blender/blenkernel/intern/lib_id.cc +++ b/source/blender/blenkernel/intern/lib_id.cc @@ -101,7 +101,6 @@ IDTypeInfo IDType_ID_LINK_PLACEHOLDER = { /*blend_write*/ nullptr, /*blend_read_data*/ nullptr, /*blend_read_lib*/ nullptr, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/library.cc b/source/blender/blenkernel/intern/library.cc index f0c02e9d476..9b6d75812b6 100644 --- a/source/blender/blenkernel/intern/library.cc +++ b/source/blender/blenkernel/intern/library.cc @@ -105,7 +105,6 @@ IDTypeInfo IDType_ID_LI = { /*blend_write*/ nullptr, /*blend_read_data*/ library_blend_read_data, /*blend_read_lib*/ nullptr, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/light.cc b/source/blender/blenkernel/intern/light.cc index 0dc1dd68464..159ff63b2f9 100644 --- a/source/blender/blenkernel/intern/light.cc +++ b/source/blender/blenkernel/intern/light.cc @@ -160,12 +160,6 @@ static void light_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &la->ipo); // XXX deprecated - old animation system } -static void light_blend_read_expand(BlendExpander *expander, ID *id) -{ - Light *la = (Light *)id; - BLO_expand(expander, la->ipo); // XXX deprecated - old animation system -} - IDTypeInfo IDType_ID_LA = { /*id_code*/ ID_LA, /*id_filter*/ FILTER_ID_LA, @@ -189,7 +183,6 @@ IDTypeInfo IDType_ID_LA = { /*blend_write*/ light_blend_write, /*blend_read_data*/ light_blend_read_data, /*blend_read_lib*/ light_blend_read_lib, - /*blend_read_expand*/ light_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/lightprobe.cc b/source/blender/blenkernel/intern/lightprobe.cc index f62adb89521..24183246cad 100644 --- a/source/blender/blenkernel/intern/lightprobe.cc +++ b/source/blender/blenkernel/intern/lightprobe.cc @@ -81,7 +81,6 @@ IDTypeInfo IDType_ID_LP = { /*blend_write*/ lightprobe_blend_write, /*blend_read_data*/ nullptr, /*blend_read_lib*/ lightprobe_blend_read_lib, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/linestyle.cc b/source/blender/blenkernel/intern/linestyle.cc index fae22544a56..f69ba9f70ca 100644 --- a/source/blender/blenkernel/intern/linestyle.cc +++ b/source/blender/blenkernel/intern/linestyle.cc @@ -684,34 +684,6 @@ static void linestyle_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void linestyle_blend_read_expand(BlendExpander *expander, ID *id) -{ - FreestyleLineStyle *linestyle = (FreestyleLineStyle *)id; - - for (int a = 0; a < MAX_MTEX; a++) { - if (linestyle->mtex[a]) { - BLO_expand(expander, linestyle->mtex[a]->tex); - BLO_expand(expander, linestyle->mtex[a]->object); - } - } - - LISTBASE_FOREACH (LineStyleModifier *, m, &linestyle->color_modifiers) { - if (m->type == LS_MODIFIER_DISTANCE_FROM_OBJECT) { - BLO_expand(expander, ((LineStyleColorModifier_DistanceFromObject *)m)->target); - } - } - LISTBASE_FOREACH (LineStyleModifier *, m, &linestyle->alpha_modifiers) { - if (m->type == LS_MODIFIER_DISTANCE_FROM_OBJECT) { - BLO_expand(expander, ((LineStyleAlphaModifier_DistanceFromObject *)m)->target); - } - } - LISTBASE_FOREACH (LineStyleModifier *, m, &linestyle->thickness_modifiers) { - if (m->type == LS_MODIFIER_DISTANCE_FROM_OBJECT) { - BLO_expand(expander, ((LineStyleThicknessModifier_DistanceFromObject *)m)->target); - } - } -} - IDTypeInfo IDType_ID_LS = { /*id_code*/ ID_LS, /*id_filter*/ FILTER_ID_LS, @@ -735,7 +707,6 @@ IDTypeInfo IDType_ID_LS = { /*blend_write*/ linestyle_blend_write, /*blend_read_data*/ linestyle_blend_read_data, /*blend_read_lib*/ linestyle_blend_read_lib, - /*blend_read_expand*/ linestyle_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/mask.cc b/source/blender/blenkernel/intern/mask.cc index f11542ef8d8..e1a6fc20429 100644 --- a/source/blender/blenkernel/intern/mask.cc +++ b/source/blender/blenkernel/intern/mask.cc @@ -205,28 +205,6 @@ static void mask_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void expand_mask_parent(BlendExpander *expander, MaskParent *parent) -{ - if (parent->id) { - BLO_expand(expander, parent->id); - } -} - -static void mask_blend_read_expand(BlendExpander *expander, ID *id) -{ - Mask *mask = (Mask *)id; - LISTBASE_FOREACH (MaskLayer *, mask_layer, &mask->masklayers) { - LISTBASE_FOREACH (MaskSpline *, spline, &mask_layer->splines) { - for (int i = 0; i < spline->tot_point; i++) { - MaskSplinePoint *point = &spline->points[i]; - expand_mask_parent(expander, &point->parent); - } - - expand_mask_parent(expander, &spline->parent); - } - } -} - IDTypeInfo IDType_ID_MSK = { /*id_code*/ ID_MSK, /*id_filter*/ FILTER_ID_MSK, @@ -250,7 +228,6 @@ IDTypeInfo IDType_ID_MSK = { /*blend_write*/ mask_blend_write, /*blend_read_data*/ mask_blend_read_data, /*blend_read_lib*/ mask_blend_read_lib, - /*blend_read_expand*/ mask_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/material.cc b/source/blender/blenkernel/intern/material.cc index 49c6f17e40a..2d2bebbd359 100644 --- a/source/blender/blenkernel/intern/material.cc +++ b/source/blender/blenkernel/intern/material.cc @@ -243,18 +243,6 @@ static void material_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void material_blend_read_expand(BlendExpander *expander, ID *id) -{ - Material *ma = (Material *)id; - BLO_expand(expander, ma->ipo); /* XXX deprecated - old animation system */ - - if (ma->gp_style) { - MaterialGPencilStyle *gp_style = ma->gp_style; - BLO_expand(expander, gp_style->sima); - BLO_expand(expander, gp_style->ima); - } -} - IDTypeInfo IDType_ID_MA = { /*id_code*/ ID_MA, /*id_filter*/ FILTER_ID_MA, @@ -278,7 +266,6 @@ IDTypeInfo IDType_ID_MA = { /*blend_write*/ material_blend_write, /*blend_read_data*/ material_blend_read_data, /*blend_read_lib*/ material_blend_read_lib, - /*blend_read_expand*/ material_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/mball.cc b/source/blender/blenkernel/intern/mball.cc index f510715004b..cbfbd765e29 100644 --- a/source/blender/blenkernel/intern/mball.cc +++ b/source/blender/blenkernel/intern/mball.cc @@ -151,14 +151,6 @@ static void metaball_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &mb->ipo); // XXX deprecated - old animation system } -static void metaball_blend_read_expand(BlendExpander *expander, ID *id) -{ - MetaBall *mb = (MetaBall *)id; - for (int a = 0; a < mb->totcol; a++) { - BLO_expand(expander, mb->mat[a]); - } -} - IDTypeInfo IDType_ID_MB = { /*id_code*/ ID_MB, /*id_filter*/ FILTER_ID_MB, @@ -182,7 +174,6 @@ IDTypeInfo IDType_ID_MB = { /*blend_write*/ metaball_blend_write, /*blend_read_data*/ metaball_blend_read_data, /*blend_read_lib*/ metaball_blend_read_lib, - /*blend_read_expand*/ metaball_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc index 7f0b3b55444..90904492c97 100644 --- a/source/blender/blenkernel/intern/mesh.cc +++ b/source/blender/blenkernel/intern/mesh.cc @@ -371,17 +371,6 @@ static void mesh_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &me->texcomesh); } -static void mesh_read_expand(BlendExpander *expander, ID *id) -{ - Mesh *me = reinterpret_cast(id); - for (int a = 0; a < me->totcol; a++) { - BLO_expand(expander, me->mat[a]); - } - - BLO_expand(expander, me->key); - BLO_expand(expander, me->texcomesh); -} - IDTypeInfo IDType_ID_ME = { /*id_code*/ ID_ME, /*id_filter*/ FILTER_ID_ME, @@ -405,7 +394,6 @@ IDTypeInfo IDType_ID_ME = { /*blend_write*/ mesh_blend_write, /*blend_read_data*/ mesh_blend_read_data, /*blend_read_lib*/ mesh_blend_read_lib, - /*blend_read_expand*/ mesh_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/movieclip.cc b/source/blender/blenkernel/intern/movieclip.cc index bf8073d88b0..a964fb658fa 100644 --- a/source/blender/blenkernel/intern/movieclip.cc +++ b/source/blender/blenkernel/intern/movieclip.cc @@ -329,7 +329,6 @@ IDTypeInfo IDType_ID_MC = { /*blend_write*/ movieclip_blend_write, /*blend_read_data*/ movieclip_blend_read_data, /*blend_read_lib*/ movieclip_blend_read_lib, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/nla.cc b/source/blender/blenkernel/intern/nla.cc index db1e67108aa..66685167e4e 100644 --- a/source/blender/blenkernel/intern/nla.cc +++ b/source/blender/blenkernel/intern/nla.cc @@ -2371,23 +2371,6 @@ static void blend_lib_read_nla_strips(BlendLibReader *reader, ID *id, ListBase * } } -static void blend_read_expand_nla_strips(BlendExpander *expander, ListBase *strips) -{ - LISTBASE_FOREACH (NlaStrip *, strip, strips) { - /* check child strips */ - blend_read_expand_nla_strips(expander, &strip->strips); - - /* check F-Curves */ - BKE_fcurve_blend_read_expand(expander, &strip->fcurves); - - /* check F-Modifiers */ - BKE_fmodifiers_blend_read_expand(expander, &strip->modifiers); - - /* relink referenced action */ - BLO_expand(expander, strip->act); - } -} - void BKE_nla_blend_write(BlendWriter *writer, ListBase *tracks) { /* write all the tracks */ @@ -2424,10 +2407,3 @@ void BKE_nla_blend_read_lib(BlendLibReader *reader, ID *id, ListBase *tracks) } } -void BKE_nla_blend_read_expand(BlendExpander *expander, ListBase *tracks) -{ - /* nla-data - referenced actions */ - LISTBASE_FOREACH (NlaTrack *, nlt, tracks) { - blend_read_expand_nla_strips(expander, &nlt->strips); - } -} diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc index 2c49d3598f7..245ba94ddf6 100644 --- a/source/blender/blenkernel/intern/node.cc +++ b/source/blender/blenkernel/intern/node.cc @@ -1047,85 +1047,6 @@ static void ntree_blend_read_lib(BlendLibReader *reader, ID *id) ntreeBlendReadLib(reader, ntree); } -static void expand_node_socket(BlendExpander *expander, bNodeSocket *sock) -{ - IDP_BlendReadExpand(expander, sock->prop); - - if (sock->default_value == nullptr) { - return; - } - - switch (eNodeSocketDatatype(sock->type)) { - case SOCK_OBJECT: { - BLO_expand(expander, sock->default_value_typed()->value); - break; - } - case SOCK_IMAGE: { - BLO_expand(expander, sock->default_value_typed()->value); - break; - } - case SOCK_COLLECTION: { - BLO_expand(expander, sock->default_value_typed()->value); - break; - } - case SOCK_TEXTURE: { - BLO_expand(expander, sock->default_value_typed()->value); - break; - } - case SOCK_MATERIAL: { - BLO_expand(expander, sock->default_value_typed()->value); - break; - } - case SOCK_FLOAT: - case SOCK_VECTOR: - case SOCK_RGBA: - case SOCK_BOOLEAN: - case SOCK_ROTATION: - case SOCK_INT: - case SOCK_STRING: - case SOCK_CUSTOM: - case SOCK_SHADER: - case SOCK_GEOMETRY: - break; - } -} - -static void expand_node_sockets(BlendExpander *expander, ListBase *sockets) -{ - LISTBASE_FOREACH (bNodeSocket *, sock, sockets) { - expand_node_socket(expander, sock); - } -} - -void ntreeBlendReadExpand(BlendExpander *expander, bNodeTree *ntree) -{ - if (ntree->gpd) { - BLO_expand(expander, ntree->gpd); - } - - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { - if (node->id && !(node->type == CMP_NODE_R_LAYERS) && - !(node->type == CMP_NODE_CRYPTOMATTE && node->custom1 == CMP_CRYPTOMATTE_SRC_RENDER)) - { - BLO_expand(expander, node->id); - } - - IDP_BlendReadExpand(expander, node->prop); - - expand_node_sockets(expander, &node->inputs); - expand_node_sockets(expander, &node->outputs); - } - - expand_node_sockets(expander, &ntree->inputs); - expand_node_sockets(expander, &ntree->outputs); -} - -static void ntree_blend_read_expand(BlendExpander *expander, ID *id) -{ - bNodeTree *ntree = reinterpret_cast(id); - ntreeBlendReadExpand(expander, ntree); -} - static void node_tree_asset_pre_save(void *asset_ptr, AssetMetaData *asset_data) { bNodeTree &node_tree = *static_cast(asset_ptr); @@ -1179,7 +1100,6 @@ IDTypeInfo IDType_ID_NT = { /*blend_write*/ blender::bke::ntree_blend_write, /*blend_read_data*/ blender::bke::ntree_blend_read_data, /*blend_read_lib*/ blender::bke::ntree_blend_read_lib, - /*blend_read_expand*/ blender::bke::ntree_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/node_tree_interface.cc b/source/blender/blenkernel/intern/node_tree_interface.cc index a539069e302..d82e42c160f 100644 --- a/source/blender/blenkernel/intern/node_tree_interface.cc +++ b/source/blender/blenkernel/intern/node_tree_interface.cc @@ -376,42 +376,6 @@ static void socket_data_read_lib(BlendLibReader *reader, ID *id, bNodeTreeInterf /** \} */ -/* -------------------------------------------------------------------- */ -/** \name Expand Socket Data - * \{ */ - -template void socket_data_expand_impl(BlendExpander * /*expander*/, T & /*data*/) {} -template<> void socket_data_expand_impl(BlendExpander *expander, bNodeSocketValueObject &data) -{ - BLO_expand(expander, &data.value); -} -template<> void socket_data_expand_impl(BlendExpander *expander, bNodeSocketValueImage &data) -{ - BLO_expand(expander, &data.value); -} -template<> void socket_data_expand_impl(BlendExpander *expander, bNodeSocketValueCollection &data) -{ - BLO_expand(expander, &data.value); -} -template<> void socket_data_expand_impl(BlendExpander *expander, bNodeSocketValueTexture &data) -{ - BLO_expand(expander, &data.value); -} -template<> void socket_data_expand_impl(BlendExpander *expander, bNodeSocketValueMaterial &data) -{ - BLO_expand(expander, &data.value); -} - -static void socket_data_expand(BlendExpander *expander, bNodeTreeInterfaceSocket &socket) -{ - socket_data_to_static_type_tag(socket.socket_type, [&](auto type_tag) { - using SocketDataType = typename decltype(type_tag)::type; - socket_data_expand_impl(expander, get_socket_data_as(socket)); - }); -} - -/** \} */ - /* -------------------------------------------------------------------- */ /** \name Callback per ID Pointer * \{ */ @@ -624,25 +588,6 @@ static void item_read_lib(BlendLibReader *reader, ID *id, bNodeTreeInterfaceItem } } -static void item_read_expand(BlendExpander *expander, bNodeTreeInterfaceItem &item) -{ - switch (item.item_type) { - case NODE_INTERFACE_SOCKET: { - bNodeTreeInterfaceSocket &socket = reinterpret_cast(item); - IDP_BlendReadExpand(expander, socket.properties); - socket_types::socket_data_expand(expander, socket); - break; - } - case NODE_INTERFACE_PANEL: { - bNodeTreeInterfacePanel &panel = reinterpret_cast(item); - for (bNodeTreeInterfaceItem *item : panel.items()) { - item_read_expand(expander, *item); - } - break; - } - } -} - static void item_foreach_id(LibraryForeachIDData *data, bNodeTreeInterfaceItem &item) { switch (item.item_type) { @@ -1096,11 +1041,6 @@ void bNodeTreeInterface::read_lib(BlendLibReader *reader, ID *id) item_types::item_read_lib(reader, id, this->root_panel.item); } -void bNodeTreeInterface::read_expand(BlendExpander *expander) -{ - item_types::item_read_expand(expander, this->root_panel.item); -} - bNodeTreeInterfaceItem *bNodeTreeInterface::active_item() { bNodeTreeInterfaceItem *active = nullptr; diff --git a/source/blender/blenkernel/intern/object.cc b/source/blender/blenkernel/intern/object.cc index be18f1fec72..798b8a1bd1d 100644 --- a/source/blender/blenkernel/intern/object.cc +++ b/source/blender/blenkernel/intern/object.cc @@ -1029,23 +1029,6 @@ static void object_blend_read_lib(BlendLibReader *reader, ID *id) } } -/* XXX deprecated - old animation system */ -static void expand_constraint_channels(BlendExpander *expander, ListBase *chanbase) -{ - LISTBASE_FOREACH (bConstraintChannel *, chan, chanbase) { - BLO_expand(expander, chan->ipo); - } -} - -static void expand_object_expandModifiers(void *user_data, - Object * /*ob*/, - ID **idpoin, - int /*cb_flag*/) -{ - BlendExpander *expander = (BlendExpander *)user_data; - BLO_expand(expander, *idpoin); -} - PartEff *BKE_object_do_version_give_parteff_245(Object *ob) { PartEff *paf; @@ -1060,97 +1043,6 @@ PartEff *BKE_object_do_version_give_parteff_245(Object *ob) return nullptr; } -static void object_blend_read_expand(BlendExpander *expander, ID *id) -{ - Object *ob = (Object *)id; - - BLO_expand(expander, ob->data); - - BLO_expand(expander, ob->parent); - - /* expand_object_expandModifier() */ - if (ob->modifiers.first) { - BKE_modifiers_foreach_ID_link(ob, expand_object_expandModifiers, expander); - } - - /* expand_object_expandModifier() */ - if (ob->greasepencil_modifiers.first) { - BKE_gpencil_modifiers_foreach_ID_link(ob, expand_object_expandModifiers, expander); - } - - /* expand_object_expandShaderFx() */ - if (ob->shader_fx.first) { - BKE_shaderfx_foreach_ID_link(ob, expand_object_expandModifiers, expander); - } - - BKE_pose_blend_read_expand(expander, ob->pose); - BLO_expand(expander, ob->poselib); - BKE_constraint_blend_read_expand(expander, &ob->constraints); - - BLO_expand(expander, ob->gpd); - - /* XXX deprecated - old animation system (for version patching only) */ - BLO_expand(expander, ob->ipo); - BLO_expand(expander, ob->action); - - expand_constraint_channels(expander, &ob->constraintChannels); - - LISTBASE_FOREACH (bActionStrip *, strip, &ob->nlastrips) { - BLO_expand(expander, strip->object); - BLO_expand(expander, strip->act); - BLO_expand(expander, strip->ipo); - } - /* XXX deprecated - old animation system (for version patching only) */ - - for (int a = 0; a < ob->totcol; a++) { - BLO_expand(expander, ob->mat[a]); - } - - PartEff *paf = BKE_object_do_version_give_parteff_245(ob); - if (paf && paf->group) { - BLO_expand(expander, paf->group); - } - - if (ob->instance_collection) { - BLO_expand(expander, ob->instance_collection); - } - - if (ob->proxy) { - BLO_expand(expander, ob->proxy); - } - if (ob->proxy_group) { - BLO_expand(expander, ob->proxy_group); - } - - LISTBASE_FOREACH (ParticleSystem *, psys, &ob->particlesystem) { - BLO_expand(expander, psys->part); - } - - if (ob->pd) { - BLO_expand(expander, ob->pd->tex); - BLO_expand(expander, ob->pd->f_source); - } - - if (ob->soft) { - BLO_expand(expander, ob->soft->collision_group); - - if (ob->soft->effector_weights) { - BLO_expand(expander, ob->soft->effector_weights->group); - } - } - - if (ob->rigidbody_constraint) { - BLO_expand(expander, ob->rigidbody_constraint->ob1); - BLO_expand(expander, ob->rigidbody_constraint->ob2); - } - - /* Light and shadow linking. */ - if (ob->light_linking) { - BLO_expand(expander, ob->light_linking->receiver_collection); - BLO_expand(expander, ob->light_linking->blocker_collection); - } -} - static void object_lib_override_apply_post(ID *id_dst, ID *id_src) { /* id_dst is the new local override copy of the linked reference data. id_src is the old override @@ -1274,7 +1166,6 @@ IDTypeInfo IDType_ID_OB = { /*blend_write*/ object_blend_write, /*blend_read_data*/ object_blend_read_data, /*blend_read_lib*/ object_blend_read_lib, - /*blend_read_expand*/ object_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/paint.cc b/source/blender/blenkernel/intern/paint.cc index 2ef63904931..e796073a3b3 100644 --- a/source/blender/blenkernel/intern/paint.cc +++ b/source/blender/blenkernel/intern/paint.cc @@ -161,7 +161,6 @@ IDTypeInfo IDType_ID_PAL = { /*blend_write*/ palette_blend_write, /*blend_read_data*/ palette_blend_read_data, /*blend_read_lib*/ nullptr, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ palette_undo_preserve, @@ -229,7 +228,6 @@ IDTypeInfo IDType_ID_PC = { /*blend_write*/ paint_curve_blend_write, /*blend_read_data*/ paint_curve_blend_read_data, /*blend_read_lib*/ nullptr, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/particle.cc b/source/blender/blenkernel/intern/particle.cc index 1669cd69e94..653c9c67cad 100644 --- a/source/blender/blenkernel/intern/particle.cc +++ b/source/blender/blenkernel/intern/particle.cc @@ -435,55 +435,6 @@ static void particle_settings_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void particle_settings_blend_read_expand(BlendExpander *expander, ID *id) -{ - ParticleSettings *part = (ParticleSettings *)id; - BLO_expand(expander, part->instance_object); - BLO_expand(expander, part->instance_collection); - BLO_expand(expander, part->force_group); - BLO_expand(expander, part->bb_ob); - BLO_expand(expander, part->collision_group); - - for (int a = 0; a < MAX_MTEX; a++) { - if (part->mtex[a]) { - BLO_expand(expander, part->mtex[a]->tex); - BLO_expand(expander, part->mtex[a]->object); - } - } - - if (part->effector_weights) { - BLO_expand(expander, part->effector_weights->group); - } - - if (part->pd) { - BLO_expand(expander, part->pd->tex); - BLO_expand(expander, part->pd->f_source); - } - if (part->pd2) { - BLO_expand(expander, part->pd2->tex); - BLO_expand(expander, part->pd2->f_source); - } - - if (part->boids) { - LISTBASE_FOREACH (BoidState *, state, &part->boids->states) { - LISTBASE_FOREACH (BoidRule *, rule, &state->rules) { - if (rule->type == eBoidRuleType_Avoid) { - BoidRuleGoalAvoid *gabr = (BoidRuleGoalAvoid *)rule; - BLO_expand(expander, gabr->ob); - } - else if (rule->type == eBoidRuleType_FollowLeader) { - BoidRuleFollowLeader *flbr = (BoidRuleFollowLeader *)rule; - BLO_expand(expander, flbr->ob); - } - } - } - } - - LISTBASE_FOREACH (ParticleDupliWeight *, dw, &part->instance_weights) { - BLO_expand(expander, dw->ob); - } -} - IDTypeInfo IDType_ID_PA = { /*id_code*/ ID_PA, /*id_filter*/ FILTER_ID_PA, @@ -507,7 +458,6 @@ IDTypeInfo IDType_ID_PA = { /*blend_write*/ particle_settings_blend_write, /*blend_read_data*/ particle_settings_blend_read_data, /*blend_read_lib*/ particle_settings_blend_read_lib, - /*blend_read_expand*/ particle_settings_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/pointcloud.cc b/source/blender/blenkernel/intern/pointcloud.cc index 9abf877d555..ec5529b0a0c 100644 --- a/source/blender/blenkernel/intern/pointcloud.cc +++ b/source/blender/blenkernel/intern/pointcloud.cc @@ -149,14 +149,6 @@ static void pointcloud_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void pointcloud_blend_read_expand(BlendExpander *expander, ID *id) -{ - PointCloud *pointcloud = (PointCloud *)id; - for (int a = 0; a < pointcloud->totcol; a++) { - BLO_expand(expander, pointcloud->mat[a]); - } -} - IDTypeInfo IDType_ID_PT = { /*id_code*/ ID_PT, /*id_filter*/ FILTER_ID_PT, @@ -180,7 +172,6 @@ IDTypeInfo IDType_ID_PT = { /*blend_write*/ pointcloud_blend_write, /*blend_read_data*/ pointcloud_blend_read_data, /*blend_read_lib*/ pointcloud_blend_read_lib, - /*blend_read_expand*/ pointcloud_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/scene.cc b/source/blender/blenkernel/intern/scene.cc index 2c449a89d0d..3081db5c2ae 100644 --- a/source/blender/blenkernel/intern/scene.cc +++ b/source/blender/blenkernel/intern/scene.cc @@ -1662,82 +1662,6 @@ static void scene_blend_read_lib(BlendLibReader *reader, ID *id) #endif } -static void scene_blend_read_expand(BlendExpander *expander, ID *id) -{ - Scene *sce = (Scene *)id; - - LISTBASE_FOREACH (Base *, base_legacy, &sce->base) { - BLO_expand(expander, base_legacy->object); - } - BLO_expand(expander, sce->camera); - BLO_expand(expander, sce->world); - - BKE_keyingsets_blend_read_expand(expander, &sce->keyingsets); - - if (sce->set) { - BLO_expand(expander, sce->set); - } - - LISTBASE_FOREACH (SceneRenderLayer *, srl, &sce->r.layers) { - BLO_expand(expander, srl->mat_override); - LISTBASE_FOREACH (FreestyleModuleConfig *, module, &srl->freestyleConfig.modules) { - if (module->script) { - BLO_expand(expander, module->script); - } - } - LISTBASE_FOREACH (FreestyleLineSet *, lineset, &srl->freestyleConfig.linesets) { - if (lineset->group) { - BLO_expand(expander, lineset->group); - } - BLO_expand(expander, lineset->linestyle); - } - } - - LISTBASE_FOREACH (ViewLayer *, view_layer, &sce->view_layers) { - IDP_BlendReadExpand(expander, view_layer->id_properties); - - LISTBASE_FOREACH (FreestyleModuleConfig *, module, &view_layer->freestyle_config.modules) { - if (module->script) { - BLO_expand(expander, module->script); - } - } - - LISTBASE_FOREACH (FreestyleLineSet *, lineset, &view_layer->freestyle_config.linesets) { - if (lineset->group) { - BLO_expand(expander, lineset->group); - } - BLO_expand(expander, lineset->linestyle); - } - } - - if (sce->gpd) { - BLO_expand(expander, sce->gpd); - } - - if (sce->ed) { - SEQ_blend_read_expand(expander, &sce->ed->seqbase); - } - - if (sce->rigidbody_world) { - BLO_expand(expander, sce->rigidbody_world->group); - BLO_expand(expander, sce->rigidbody_world->constraints); - } - - LISTBASE_FOREACH (TimeMarker *, marker, &sce->markers) { - IDP_BlendReadExpand(expander, marker->prop); - - if (marker->camera) { - BLO_expand(expander, marker->camera); - } - } - - BLO_expand(expander, sce->clip); - - if (sce->r.bake.cage_object) { - BLO_expand(expander, sce->r.bake.cage_object); - } -} - static void scene_undo_preserve(BlendLibReader *reader, ID *id_new, ID *id_old) { Scene *scene_new = (Scene *)id_new; @@ -1794,7 +1718,6 @@ constexpr IDTypeInfo get_type_info() info.blend_write = scene_blend_write; info.blend_read_data = scene_blend_read_data; info.blend_read_lib = scene_blend_read_lib; - info.blend_read_expand = scene_blend_read_expand; info.blend_read_undo_preserve = scene_undo_preserve; diff --git a/source/blender/blenkernel/intern/screen.cc b/source/blender/blenkernel/intern/screen.cc index 73ae2891f66..a0f0cf4a31e 100644 --- a/source/blender/blenkernel/intern/screen.cc +++ b/source/blender/blenkernel/intern/screen.cc @@ -185,7 +185,6 @@ IDTypeInfo IDType_ID_SCR = { /* Cannot be used yet, because #direct_link_screen has a return value. */ /*blend_read_data*/ nullptr, /*blend_read_lib*/ screen_blend_read_lib, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/sound.cc b/source/blender/blenkernel/intern/sound.cc index 52d61a377ca..43522b9192a 100644 --- a/source/blender/blenkernel/intern/sound.cc +++ b/source/blender/blenkernel/intern/sound.cc @@ -196,12 +196,6 @@ static void sound_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &sound->ipo); } -static void sound_blend_read_expand(BlendExpander *expander, ID *id) -{ - bSound *snd = (bSound *)id; - BLO_expand(expander, snd->ipo); /* XXX deprecated - old animation system */ -} - IDTypeInfo IDType_ID_SO = { /*id_code*/ ID_SO, /*id_filter*/ FILTER_ID_SO, @@ -226,7 +220,6 @@ IDTypeInfo IDType_ID_SO = { /*blend_write*/ sound_blend_write, /*blend_read_data*/ sound_blend_read_data, /*blend_read_lib*/ sound_blend_read_lib, - /*blend_read_expand*/ sound_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/speaker.cc b/source/blender/blenkernel/intern/speaker.cc index 382d5658bf8..7209c5e6c97 100644 --- a/source/blender/blenkernel/intern/speaker.cc +++ b/source/blender/blenkernel/intern/speaker.cc @@ -57,12 +57,6 @@ static void speaker_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &spk->sound); } -static void speaker_blend_read_expand(BlendExpander *expander, ID *id) -{ - Speaker *spk = (Speaker *)id; - BLO_expand(expander, spk->sound); -} - IDTypeInfo IDType_ID_SPK = { /*id_code*/ ID_SPK, /*id_filter*/ FILTER_ID_SPK, @@ -86,7 +80,6 @@ IDTypeInfo IDType_ID_SPK = { /*blend_write*/ speaker_blend_write, /*blend_read_data*/ nullptr, /*blend_read_lib*/ speaker_blend_read_lib, - /*blend_read_expand*/ speaker_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/text.cc b/source/blender/blenkernel/intern/text.cc index 600fb25f2e1..ac6cd6a368e 100644 --- a/source/blender/blenkernel/intern/text.cc +++ b/source/blender/blenkernel/intern/text.cc @@ -248,7 +248,6 @@ IDTypeInfo IDType_ID_TXT = { /*blend_write*/ text_blend_write, /*blend_read_data*/ text_blend_read_data, /*blend_read_lib*/ nullptr, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/texture.cc b/source/blender/blenkernel/intern/texture.cc index b89a6b457cc..19a7a47f006 100644 --- a/source/blender/blenkernel/intern/texture.cc +++ b/source/blender/blenkernel/intern/texture.cc @@ -201,13 +201,6 @@ static void texture_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &tex->ipo); /* XXX deprecated - old animation system */ } -static void texture_blend_read_expand(BlendExpander *expander, ID *id) -{ - Tex *tex = (Tex *)id; - BLO_expand(expander, tex->ima); - BLO_expand(expander, tex->ipo); /* XXX deprecated - old animation system */ -} - IDTypeInfo IDType_ID_TE = { /*id_code*/ ID_TE, /*id_filter*/ FILTER_ID_TE, @@ -231,7 +224,6 @@ IDTypeInfo IDType_ID_TE = { /*blend_write*/ texture_blend_write, /*blend_read_data*/ texture_blend_read_data, /*blend_read_lib*/ texture_blend_read_lib, - /*blend_read_expand*/ texture_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/vfont.cc b/source/blender/blenkernel/intern/vfont.cc index a87fa9da35d..c47a5c46a60 100644 --- a/source/blender/blenkernel/intern/vfont.cc +++ b/source/blender/blenkernel/intern/vfont.cc @@ -177,7 +177,6 @@ IDTypeInfo IDType_ID_VF = { /*blend_write*/ vfont_blend_write, /*blend_read_data*/ vfont_blend_read_data, /*blend_read_lib*/ nullptr, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/volume.cc b/source/blender/blenkernel/intern/volume.cc index 2c577bf8b8a..66344515aa1 100644 --- a/source/blender/blenkernel/intern/volume.cc +++ b/source/blender/blenkernel/intern/volume.cc @@ -636,14 +636,6 @@ static void volume_blend_read_lib(BlendLibReader *reader, ID *id) } } -static void volume_blend_read_expand(BlendExpander *expander, ID *id) -{ - Volume *volume = (Volume *)id; - for (int a = 0; a < volume->totcol; a++) { - BLO_expand(expander, volume->mat[a]); - } -} - IDTypeInfo IDType_ID_VO = { /*id_code*/ ID_VO, /*id_filter*/ FILTER_ID_VO, @@ -667,7 +659,6 @@ IDTypeInfo IDType_ID_VO = { /*blend_write*/ volume_blend_write, /*blend_read_data*/ volume_blend_read_data, /*blend_read_lib*/ volume_blend_read_lib, - /*blend_read_expand*/ volume_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/workspace.cc b/source/blender/blenkernel/intern/workspace.cc index 0f0e6401a4f..f6d497c557d 100644 --- a/source/blender/blenkernel/intern/workspace.cc +++ b/source/blender/blenkernel/intern/workspace.cc @@ -177,15 +177,6 @@ static void workspace_blend_read_lib(BlendLibReader *reader, ID *id) BKE_viewer_path_blend_read_lib(reader, id, &workspace->viewer_path); } -static void workspace_blend_read_expand(BlendExpander *expander, ID *id) -{ - WorkSpace *workspace = (WorkSpace *)id; - - LISTBASE_FOREACH (WorkSpaceLayout *, layout, &workspace->layouts) { - BLO_expand(expander, BKE_workspace_layout_screen_get(layout)); - } -} - IDTypeInfo IDType_ID_WS = { /*id_code*/ ID_WS, /*id_filter*/ FILTER_ID_WS, @@ -210,7 +201,6 @@ IDTypeInfo IDType_ID_WS = { /*blend_write*/ workspace_blend_write, /*blend_read_data*/ workspace_blend_read_data, /*blend_read_lib*/ workspace_blend_read_lib, - /*blend_read_expand*/ workspace_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenkernel/intern/world.cc b/source/blender/blenkernel/intern/world.cc index 357138b609b..95974dd3806 100644 --- a/source/blender/blenkernel/intern/world.cc +++ b/source/blender/blenkernel/intern/world.cc @@ -181,12 +181,6 @@ static void world_blend_read_lib(BlendLibReader *reader, ID *id) BLO_read_id_address(reader, id, &wrld->ipo); /* XXX deprecated, old animation system */ } -static void world_blend_read_expand(BlendExpander *expander, ID *id) -{ - World *wrld = (World *)id; - BLO_expand(expander, wrld->ipo); /* XXX deprecated, old animation system */ -} - IDTypeInfo IDType_ID_WO = { /*id_code*/ ID_WO, /*id_filter*/ FILTER_ID_WO, @@ -210,7 +204,6 @@ IDTypeInfo IDType_ID_WO = { /*blend_write*/ world_blend_write, /*blend_read_data*/ world_blend_read_data, /*blend_read_lib*/ world_blend_read_lib, - /*blend_read_expand*/ world_blend_read_expand, /*blend_read_undo_preserve*/ nullptr, diff --git a/source/blender/blenloader/BLO_read_write.h b/source/blender/blenloader/BLO_read_write.h index e721155ca51..252f6c24c28 100644 --- a/source/blender/blenloader/BLO_read_write.h +++ b/source/blender/blenloader/BLO_read_write.h @@ -38,7 +38,6 @@ extern "C" { #endif typedef struct BlendDataReader BlendDataReader; -typedef struct BlendExpander BlendExpander; typedef struct BlendLibReader BlendLibReader; typedef struct BlendWriter BlendWriter; @@ -313,19 +312,6 @@ struct BlendFileReadReport *BLO_read_lib_reports(BlendLibReader *reader); /** \} */ -/* -------------------------------------------------------------------- */ -/** \name Blend Expand API - * - * BLO_expand has to be called for every data block that should be loaded. If the data block is in - * a separate `.blend` file, it will be pulled from there. - * \{ */ - -void BLO_expand_id(BlendExpander *expander, struct ID *id); - -#define BLO_expand(expander, id) BLO_expand_id(expander, (struct ID *)id) - -/** \} */ - /* -------------------------------------------------------------------- */ /** \name Report API * \{ */ diff --git a/source/blender/blenloader/intern/readfile.cc b/source/blender/blenloader/intern/readfile.cc index d9fa0287f4a..867b41b7f11 100644 --- a/source/blender/blenloader/intern/readfile.cc +++ b/source/blender/blenloader/intern/readfile.cc @@ -597,11 +597,6 @@ struct BlendLibReader { Main *main; }; -struct BlendExpander { - FileData *fd; - Main *main; -}; - static void switch_endian_bh4(BHead4 *bhead) { /* the ID_.. codes */ @@ -3933,6 +3928,11 @@ static ID *library_id_is_yet_read(FileData *fd, Main *mainvar, BHead *bhead) /** \name Library Linking (expand pointers) * \{ */ +struct BlendExpander { + FileData *fd; + Main *main; +}; + static void expand_doit_library(void *fdhandle, Main *mainvar, void *old) { FileData *fd = static_cast(fdhandle); @@ -4058,55 +4058,41 @@ static void expand_doit_library(void *fdhandle, Main *mainvar, void *old) static BLOExpandDoitCallback expand_doit; -static void expand_id(BlendExpander *expander, ID *id); - -static void expand_id_embedded_id(BlendExpander *expander, ID *id) -{ - /* Handle 'private IDs'. */ - bNodeTree *nodetree = ntreeFromID(id); - if (nodetree != nullptr) { - expand_id(expander, &nodetree->id); - blender::bke::ntreeBlendReadExpand(expander, nodetree); - } - - if (GS(id->name) == ID_SCE) { - Scene *scene = (Scene *)id; - if (scene->master_collection != nullptr) { - expand_id(expander, &scene->master_collection->id); - BKE_collection_blend_read_expand(expander, scene->master_collection); - } - } -} - -static void expand_id(BlendExpander *expander, ID *id) -{ - IDP_BlendReadExpand(expander, id->properties); - - if (id->override_library) { - BLO_expand(expander, id->override_library->reference); - BLO_expand(expander, id->override_library->storage); - - LISTBASE_FOREACH (IDOverrideLibraryProperty *, op, &id->override_library->properties) { - LISTBASE_FOREACH (IDOverrideLibraryPropertyOperation *, opop, &op->operations) { - BLO_expand(expander, opop->subitem_reference_id); - BLO_expand(expander, opop->subitem_local_id); - } - } - } - - AnimData *adt = BKE_animdata_from_id(id); - if (adt != nullptr) { - BKE_animdata_blend_read_expand(expander, adt); - } - - expand_id_embedded_id(expander, id); -} - void BLO_main_expander(BLOExpandDoitCallback expand_doit_func) { expand_doit = expand_doit_func; } +static int expand_cb(LibraryIDLinkCallbackData *cb_data) +{ + /* Embedded IDs are not known by lib_link code, so they would be remapped to `nullptr`. But there + * is no need to process them anyway, asthey are already handled during the 'read_data' phase. + */ + if (cb_data->cb_flag & (IDWALK_CB_EMBEDDED | IDWALK_CB_EMBEDDED_NOT_OWNING)) { + return IDWALK_RET_NOP; + } + + /* Explicitely requested to be ignored during readfile processing. Means the read_data code + * already handled this pointer. Typically, the 'owner_id' pointer of an embedded ID. */ + if (cb_data->cb_flag & IDWALK_CB_READFILE_IGNORE) { + return IDWALK_RET_NOP; + } + + /* Expand process can be re-entrant or have other complex imteractions that will not work well + * with loop-back pointers. Further more, processing such data should not be needed here anyway. + */ + if (cb_data->cb_flag & (IDWALK_CB_LOOPBACK)) { + return IDWALK_RET_NOP; + } + + BlendExpander *expander = static_cast(cb_data->user_data); + ID *id = *(cb_data->id_pointer); + + expand_doit(expander->fd, expander->main, id); + + return IDWALK_RET_NOP; +} + void BLO_expand_main(void *fdhandle, Main *mainvar) { FileData *fd = static_cast(fdhandle); @@ -4121,12 +4107,14 @@ void BLO_expand_main(void *fdhandle, Main *mainvar) continue; } - expand_id(&expander, id_iter); - - const IDTypeInfo *id_type = BKE_idtype_get_info_from_id(id_iter); - if (id_type->blend_read_expand != nullptr) { - id_type->blend_read_expand(&expander, id_iter); - } + /* Original (current) ID pointer can be considered as valid, but _not_ its own pointers to + * other IDs - the already loaded ones will be valid, but the yet-to-be-read ones will not. + * Expanding should _not_ require processing of UI ID pointers. + * Expanding should never modify ID pointers themselves. + * Handling of DNA deprecated data should never be needed in undo case. */ + const int flag = IDWALK_READONLY | IDWALK_NO_ORIG_POINTERS_ACCESS | + ((fd->flags & FD_FLAGS_IS_MEMFILE) ? 0 : IDWALK_DO_DEPRECATED_POINTERS); + BKE_library_foreach_ID_link(nullptr, id_iter, expand_cb, &expander, flag); do_it = true; id_iter->tag &= ~LIB_TAG_NEED_EXPAND; @@ -4979,9 +4967,4 @@ BlendFileReadReport *BLO_read_lib_reports(BlendLibReader *reader) return reader->fd->reports; } -void BLO_expand_id(BlendExpander *expander, ID *id) -{ - expand_doit(expander->fd, expander->main, id); -} - /** \} */ diff --git a/source/blender/makesdna/DNA_node_tree_interface_types.h b/source/blender/makesdna/DNA_node_tree_interface_types.h index 601c0840007..294cdd88362 100644 --- a/source/blender/makesdna/DNA_node_tree_interface_types.h +++ b/source/blender/makesdna/DNA_node_tree_interface_types.h @@ -37,7 +37,6 @@ struct uiLayout; struct BlendWriter; struct BlendDataReader; struct BlendLibReader; -struct BlendExpander; /** Type of interface item. */ typedef enum NodeTreeInterfaceItemType { @@ -212,7 +211,6 @@ typedef struct bNodeTreeInterface { void write(BlendWriter *writer); void read_data(BlendDataReader *reader); void read_lib(BlendLibReader *reader, ID *id); - void read_expand(BlendExpander *expander); bNodeTreeInterfaceItem *active_item(); const bNodeTreeInterfaceItem *active_item() const; diff --git a/source/blender/sequencer/SEQ_sequencer.h b/source/blender/sequencer/SEQ_sequencer.h index bab0fe79c6d..7a183914d51 100644 --- a/source/blender/sequencer/SEQ_sequencer.h +++ b/source/blender/sequencer/SEQ_sequencer.h @@ -15,7 +15,6 @@ extern "C" { #endif struct BlendDataReader; -struct BlendExpander; struct BlendLibReader; struct BlendWriter; struct Depsgraph; @@ -111,8 +110,6 @@ void SEQ_blend_read_lib(struct BlendLibReader *reader, struct Scene *scene, struct ListBase *seqbase); -void SEQ_blend_read_expand(struct BlendExpander *expander, struct ListBase *seqbase); - void SEQ_doversion_250_sound_proxy_update(struct Main *bmain, struct Editing *ed); /* Depsgraph update function. */ diff --git a/source/blender/sequencer/intern/sequencer.cc b/source/blender/sequencer/intern/sequencer.cc index d510a209266..9f54988a790 100644 --- a/source/blender/sequencer/intern/sequencer.cc +++ b/source/blender/sequencer/intern/sequencer.cc @@ -904,40 +904,6 @@ void SEQ_blend_read_lib(BlendLibReader *reader, Scene *scene, ListBase *seqbase) SEQ_for_each_callback(seqbase, seq_read_lib_cb, &data); } -static bool seq_blend_read_expand(Sequence *seq, void *user_data) -{ - BlendExpander *expander = (BlendExpander *)user_data; - - IDP_BlendReadExpand(expander, seq->prop); - - if (seq->scene) { - BLO_expand(expander, seq->scene); - } - if (seq->scene_camera) { - BLO_expand(expander, seq->scene_camera); - } - if (seq->clip) { - BLO_expand(expander, seq->clip); - } - if (seq->mask) { - BLO_expand(expander, seq->mask); - } - if (seq->sound) { - BLO_expand(expander, seq->sound); - } - - if (seq->type == SEQ_TYPE_TEXT && seq->effectdata) { - TextVars *data = static_cast(seq->effectdata); - BLO_expand(expander, data->text_font); - } - return true; -} - -void SEQ_blend_read_expand(BlendExpander *expander, ListBase *seqbase) -{ - SEQ_for_each_callback(seqbase, seq_blend_read_expand, expander); -} - static bool seq_doversion_250_sound_proxy_update_cb(Sequence *seq, void *user_data) { Main *bmain = static_cast
(user_data); diff --git a/source/blender/windowmanager/intern/wm.cc b/source/blender/windowmanager/intern/wm.cc index f6de389c82a..bad0feda46b 100644 --- a/source/blender/windowmanager/intern/wm.cc +++ b/source/blender/windowmanager/intern/wm.cc @@ -292,7 +292,6 @@ IDTypeInfo IDType_ID_WM = { /*blend_write*/ window_manager_blend_write, /*blend_read_data*/ window_manager_blend_read_data, /*blend_read_lib*/ window_manager_blend_read_lib, - /*blend_read_expand*/ nullptr, /*blend_read_undo_preserve*/ nullptr,