Cleanup: `IDTypeInfo` new `asset_type_info` member.
Two issues addressed here: I) `asset_type_info` is sub-data, not a callback. Therefore, move it before the callbacks in the `IDTypeInfo` struct. II) More important, initialize this new attribute in *ALL* `IDTypeInfo` instances. No member of this struct should ever be left implicitely uninitilazed, ever. Aftermath of rBa84f1c02d251.
This commit is contained in:
parent
f8dea3fe64
commit
e0763760e4
|
@ -149,11 +149,12 @@ typedef struct IDTypeInfo {
|
|||
/** Generic info flags about that data-block type. */
|
||||
uint32_t flags;
|
||||
|
||||
/* ********** ID management callbacks ********** */
|
||||
/**
|
||||
* Information and callbacks for assets, based on the type of asset.
|
||||
*/
|
||||
struct AssetTypeInfo *asset_type_info;
|
||||
|
||||
/* TODO: Note about callbacks: Ideally we could also handle here `BKE_lib_query`'s behavior, as
|
||||
* well as read/write of files. However, this is a bit more involved than basic ID management
|
||||
* callbacks, so we'll check on this later. */
|
||||
/* ********** ID management callbacks ********** */
|
||||
|
||||
/**
|
||||
* Initialize a new, empty calloc'ed data-block. May be NULL if there is nothing to do.
|
||||
|
@ -228,11 +229,6 @@ typedef struct IDTypeInfo {
|
|||
* \note Currently needed for some update operation on point caches.
|
||||
*/
|
||||
IDTypeLibOverrideApplyPost lib_override_apply_post;
|
||||
|
||||
/**
|
||||
* Callbacks for assets, based on the type of asset.
|
||||
*/
|
||||
struct AssetTypeInfo *asset_type_info;
|
||||
} IDTypeInfo;
|
||||
|
||||
/* ********** Declaration of each IDTypeInfo. ********** */
|
||||
|
|
|
@ -320,6 +320,7 @@ IDTypeInfo IDType_ID_AC = {
|
|||
.name_plural = "actions",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_ACTION,
|
||||
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = &AssetType_AC,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = action_copy_data,
|
||||
|
@ -337,8 +338,6 @@ IDTypeInfo IDType_ID_AC = {
|
|||
.blend_read_undo_preserve = NULL,
|
||||
|
||||
.lib_override_apply_post = NULL,
|
||||
|
||||
.asset_type_info = &AssetType_AC,
|
||||
};
|
||||
|
||||
/* ***************** Library data level operations on action ************** */
|
||||
|
|
|
@ -322,6 +322,7 @@ IDTypeInfo IDType_ID_AR = {
|
|||
.name_plural = "armatures",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_ARMATURE,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = armature_init_data,
|
||||
.copy_data = armature_copy_data,
|
||||
|
|
|
@ -414,6 +414,7 @@ IDTypeInfo IDType_ID_BR = {
|
|||
.name_plural = "brushes",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_BRUSH,
|
||||
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = brush_init_data,
|
||||
.copy_data = brush_copy_data,
|
||||
|
|
|
@ -134,6 +134,7 @@ IDTypeInfo IDType_ID_CF = {
|
|||
.name_plural = "cache_files",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_CACHEFILE,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = cache_file_init_data,
|
||||
.copy_data = cache_file_copy_data,
|
||||
|
|
|
@ -182,6 +182,7 @@ IDTypeInfo IDType_ID_CA = {
|
|||
.name_plural = "cameras",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_CAMERA,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = camera_init_data,
|
||||
.copy_data = camera_copy_data,
|
||||
|
|
|
@ -375,6 +375,7 @@ IDTypeInfo IDType_ID_GR = {
|
|||
.name_plural = "collections",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_COLLECTION,
|
||||
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = collection_init_data,
|
||||
.copy_data = collection_copy_data,
|
||||
|
|
|
@ -312,6 +312,7 @@ IDTypeInfo IDType_ID_CU = {
|
|||
.name_plural = "curves",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_CURVE,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = curve_init_data,
|
||||
.copy_data = curve_copy_data,
|
||||
|
|
|
@ -320,6 +320,7 @@ IDTypeInfo IDType_ID_GD = {
|
|||
.name_plural = "grease_pencils",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_GPENCIL,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = greasepencil_copy_data,
|
||||
|
|
|
@ -182,6 +182,7 @@ IDTypeInfo IDType_ID_HA = {
|
|||
.name_plural = "hairs",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_HAIR,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = hair_init_data,
|
||||
.copy_data = hair_copy_data,
|
||||
|
|
|
@ -369,6 +369,7 @@ IDTypeInfo IDType_ID_IM = {
|
|||
.name_plural = "images",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_IMAGE,
|
||||
.flags = IDTYPE_FLAGS_NO_ANIMDATA | IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = image_init_data,
|
||||
.copy_data = image_copy_data,
|
||||
|
|
|
@ -185,6 +185,7 @@ IDTypeInfo IDType_ID_IP = {
|
|||
.name_plural = "ipos",
|
||||
.translation_context = "",
|
||||
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = NULL,
|
||||
|
|
|
@ -213,6 +213,7 @@ IDTypeInfo IDType_ID_KE = {
|
|||
.name_plural = "shape_keys",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_SHAPEKEY,
|
||||
.flags = IDTYPE_FLAGS_NO_LIBLINKING,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = shapekey_copy_data,
|
||||
|
|
|
@ -197,6 +197,7 @@ IDTypeInfo IDType_ID_LT = {
|
|||
.name_plural = "lattices",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_LATTICE,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = lattice_init_data,
|
||||
.copy_data = lattice_copy_data,
|
||||
|
|
|
@ -99,6 +99,7 @@ IDTypeInfo IDType_ID_LINK_PLACEHOLDER = {
|
|||
.name_plural = "link_placeholders",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_ID,
|
||||
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = NULL,
|
||||
|
|
|
@ -69,6 +69,7 @@ IDTypeInfo IDType_ID_LI = {
|
|||
.name_plural = "libraries",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_LIBRARY,
|
||||
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = NULL,
|
||||
|
|
|
@ -195,6 +195,7 @@ IDTypeInfo IDType_ID_LA = {
|
|||
.name_plural = "lights",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_LIGHT,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = light_init_data,
|
||||
.copy_data = light_copy_data,
|
||||
|
|
|
@ -92,6 +92,7 @@ IDTypeInfo IDType_ID_LP = {
|
|||
.name_plural = "lightprobes",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_LIGHTPROBE,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = lightprobe_init_data,
|
||||
.copy_data = NULL,
|
||||
|
|
|
@ -754,6 +754,7 @@ IDTypeInfo IDType_ID_LS = {
|
|||
.name_plural = "linestyles",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_FREESTYLELINESTYLE,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = linestyle_init_data,
|
||||
.copy_data = linestyle_copy_data,
|
||||
|
|
|
@ -255,6 +255,7 @@ IDTypeInfo IDType_ID_MSK = {
|
|||
.name_plural = "masks",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_MASK,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = mask_copy_data,
|
||||
|
|
|
@ -261,6 +261,7 @@ IDTypeInfo IDType_ID_MA = {
|
|||
.name_plural = "materials",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_MATERIAL,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = material_init_data,
|
||||
.copy_data = material_copy_data,
|
||||
|
|
|
@ -189,6 +189,7 @@ IDTypeInfo IDType_ID_MB = {
|
|||
.name_plural = "metaballs",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_METABALL,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = metaball_init_data,
|
||||
.copy_data = metaball_copy_data,
|
||||
|
|
|
@ -363,6 +363,7 @@ IDTypeInfo IDType_ID_ME = {
|
|||
/* name_plural */ "meshes",
|
||||
/* translation_context */ BLT_I18NCONTEXT_ID_MESH,
|
||||
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
/* asset_type_info */ nullptr,
|
||||
|
||||
/* init_data */ mesh_init_data,
|
||||
/* copy_data */ mesh_copy_data,
|
||||
|
@ -376,9 +377,10 @@ IDTypeInfo IDType_ID_ME = {
|
|||
/* 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,
|
||||
|
||||
/* lib_override_apply_post */ nullptr,
|
||||
/* asset_type_info */ nullptr,
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
@ -347,6 +347,7 @@ IDTypeInfo IDType_ID_MC = {
|
|||
.name_plural = "movieclips",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_MOVIECLIP,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = movie_clip_init_data,
|
||||
.copy_data = movie_clip_copy_data,
|
||||
|
|
|
@ -1047,6 +1047,7 @@ IDTypeInfo IDType_ID_NT = {
|
|||
/* name_plural */ "node_groups",
|
||||
/* translation_context */ BLT_I18NCONTEXT_ID_NODETREE,
|
||||
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
/* asset_type_info */ nullptr,
|
||||
|
||||
/* init_data */ ntree_init_data,
|
||||
/* copy_data */ ntree_copy_data,
|
||||
|
|
|
@ -1258,6 +1258,7 @@ IDTypeInfo IDType_ID_OB = {
|
|||
/* name_plural */ "objects",
|
||||
/* translation_context */ BLT_I18NCONTEXT_ID_OBJECT,
|
||||
/* flags */ 0,
|
||||
/* asset_type_info */ &AssetType_OB,
|
||||
|
||||
/* init_data */ object_init_data,
|
||||
/* copy_data */ object_copy_data,
|
||||
|
@ -1275,8 +1276,6 @@ IDTypeInfo IDType_ID_OB = {
|
|||
/* blend_read_undo_preserve */ nullptr,
|
||||
|
||||
/* lib_override_apply_post */ object_lib_override_apply_post,
|
||||
|
||||
/* asset_type_info */ &AssetType_OB,
|
||||
};
|
||||
|
||||
void BKE_object_workob_clear(Object *workob)
|
||||
|
|
|
@ -143,6 +143,7 @@ IDTypeInfo IDType_ID_PAL = {
|
|||
.name_plural = "palettes",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_PALETTE,
|
||||
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = palette_init_data,
|
||||
.copy_data = palette_copy_data,
|
||||
|
@ -208,6 +209,7 @@ IDTypeInfo IDType_ID_PC = {
|
|||
.name_plural = "paint_curves",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_PAINTCURVE,
|
||||
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = paint_curve_copy_data,
|
||||
|
|
|
@ -500,6 +500,7 @@ IDTypeInfo IDType_ID_PA = {
|
|||
.name_plural = "particles",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_PARTICLESETTINGS,
|
||||
.flags = 0,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = particle_settings_init,
|
||||
.copy_data = particle_settings_copy_data,
|
||||
|
|
|
@ -175,6 +175,7 @@ IDTypeInfo IDType_ID_PT = {
|
|||
/* name_plural */ "pointclouds",
|
||||
/* translation_context */ BLT_I18NCONTEXT_ID_POINTCLOUD,
|
||||
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
/* asset_type_info */ nullptr,
|
||||
|
||||
/* init_data */ pointcloud_init_data,
|
||||
/* copy_data */ pointcloud_copy_data,
|
||||
|
|
|
@ -1600,6 +1600,7 @@ IDTypeInfo IDType_ID_SCE = {
|
|||
.name_plural = "scenes",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_SCENE,
|
||||
.flags = 0,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = scene_init_data,
|
||||
.copy_data = scene_copy_data,
|
||||
|
|
|
@ -304,6 +304,7 @@ IDTypeInfo IDType_ID_SCR = {
|
|||
.name_plural = "screens",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_SCREEN,
|
||||
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_ONLY_APPEND | IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = NULL,
|
||||
|
|
|
@ -154,6 +154,7 @@ IDTypeInfo IDType_ID_SIM = {
|
|||
/* name_plural */ "simulations",
|
||||
/* translation_context */ BLT_I18NCONTEXT_ID_SIMULATION,
|
||||
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
/* asset_type_info */ nullptr,
|
||||
|
||||
/* init_data */ simulation_init_data,
|
||||
/* copy_data */ simulation_copy_data,
|
||||
|
|
|
@ -205,6 +205,7 @@ IDTypeInfo IDType_ID_SO = {
|
|||
.name_plural = "sounds",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_SOUND,
|
||||
.flags = IDTYPE_FLAGS_NO_ANIMDATA | IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
/* A fuzzy case, think NULLified content is OK here... */
|
||||
.init_data = NULL,
|
||||
|
|
|
@ -99,6 +99,7 @@ IDTypeInfo IDType_ID_SPK = {
|
|||
.name_plural = "speakers",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_SPEAKER,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = speaker_init_data,
|
||||
.copy_data = NULL,
|
||||
|
|
|
@ -242,6 +242,7 @@ IDTypeInfo IDType_ID_TXT = {
|
|||
.name_plural = "texts",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_TEXT,
|
||||
.flags = IDTYPE_FLAGS_NO_ANIMDATA | IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = text_init_data,
|
||||
.copy_data = text_copy_data,
|
||||
|
|
|
@ -211,6 +211,7 @@ IDTypeInfo IDType_ID_TE = {
|
|||
.name_plural = "textures",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_TEXTURE,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = texture_init_data,
|
||||
.copy_data = texture_copy_data,
|
||||
|
|
|
@ -162,6 +162,7 @@ IDTypeInfo IDType_ID_VF = {
|
|||
.name_plural = "fonts",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_VFONT,
|
||||
.flags = IDTYPE_FLAGS_NO_ANIMDATA | IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = vfont_init_data,
|
||||
.copy_data = vfont_copy_data,
|
||||
|
|
|
@ -645,6 +645,7 @@ IDTypeInfo IDType_ID_VO = {
|
|||
/* name_plural */ "volumes",
|
||||
/* translation_context */ BLT_I18NCONTEXT_ID_VOLUME,
|
||||
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
/* asset_type_info */ nullptr,
|
||||
|
||||
/* init_data */ volume_init_data,
|
||||
/* copy_data */ volume_copy_data,
|
||||
|
|
|
@ -187,6 +187,7 @@ IDTypeInfo IDType_ID_WS = {
|
|||
.name_plural = "workspaces",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_WORKSPACE,
|
||||
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_ONLY_APPEND | IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = workspace_init_data,
|
||||
.copy_data = NULL,
|
||||
|
|
|
@ -192,6 +192,7 @@ IDTypeInfo IDType_ID_WO = {
|
|||
.name_plural = "worlds",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_WORLD,
|
||||
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = world_init_data,
|
||||
.copy_data = world_copy_data,
|
||||
|
|
|
@ -272,6 +272,7 @@ IDTypeInfo IDType_ID_WM = {
|
|||
.name_plural = "window_managers",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_WINDOWMANAGER,
|
||||
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_ANIMDATA,
|
||||
.asset_type_info = NULL,
|
||||
|
||||
.init_data = NULL,
|
||||
.copy_data = NULL,
|
||||
|
|
Loading…
Reference in New Issue