Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorBastien Montagne <b.mont29@gmail.com>2020-03-04 13:42:15 +0300
committerBastien Montagne <b.mont29@gmail.com>2020-03-04 13:43:31 +0300
commit4bfa256ea48e51643f848e8dfdaeab615f7b1a88 (patch)
tree996d59300eeff16f1063a6be8887aaa3cfcb4299 /source
parent4e597a5cff6bb4195b8fc9c8102bfbdc4958b31f (diff)
Refactor ID make local to use a single flag parameter.
Instead of using anonymous booleans flags, also allows to keep the same behavior in all cases, without needing special handling from calling code for our beloved oddballs object proxies...
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_action.h2
-rw-r--r--source/blender/blenkernel/BKE_armature.h2
-rw-r--r--source/blender/blenkernel/BKE_brush.h2
-rw-r--r--source/blender/blenkernel/BKE_cachefile.h2
-rw-r--r--source/blender/blenkernel/BKE_camera.h2
-rw-r--r--source/blender/blenkernel/BKE_collection.h2
-rw-r--r--source/blender/blenkernel/BKE_curve.h2
-rw-r--r--source/blender/blenkernel/BKE_font.h2
-rw-r--r--source/blender/blenkernel/BKE_gpencil.h2
-rw-r--r--source/blender/blenkernel/BKE_image.h2
-rw-r--r--source/blender/blenkernel/BKE_lattice.h2
-rw-r--r--source/blender/blenkernel/BKE_lib_id.h17
-rw-r--r--source/blender/blenkernel/BKE_light.h2
-rw-r--r--source/blender/blenkernel/BKE_lightprobe.h2
-rw-r--r--source/blender/blenkernel/BKE_linestyle.h2
-rw-r--r--source/blender/blenkernel/BKE_mask.h2
-rw-r--r--source/blender/blenkernel/BKE_material.h2
-rw-r--r--source/blender/blenkernel/BKE_mball.h2
-rw-r--r--source/blender/blenkernel/BKE_mesh.h2
-rw-r--r--source/blender/blenkernel/BKE_movieclip.h2
-rw-r--r--source/blender/blenkernel/BKE_node.h2
-rw-r--r--source/blender/blenkernel/BKE_object.h6
-rw-r--r--source/blender/blenkernel/BKE_paint.h4
-rw-r--r--source/blender/blenkernel/BKE_particle.h2
-rw-r--r--source/blender/blenkernel/BKE_scene.h2
-rw-r--r--source/blender/blenkernel/BKE_sound.h2
-rw-r--r--source/blender/blenkernel/BKE_speaker.h2
-rw-r--r--source/blender/blenkernel/BKE_text.h2
-rw-r--r--source/blender/blenkernel/BKE_texture.h2
-rw-r--r--source/blender/blenkernel/BKE_world.h2
-rw-r--r--source/blender/blenkernel/intern/action.c4
-rw-r--r--source/blender/blenkernel/intern/armature.c4
-rw-r--r--source/blender/blenkernel/intern/brush.c5
-rw-r--r--source/blender/blenkernel/intern/cachefile.c4
-rw-r--r--source/blender/blenkernel/intern/camera.c4
-rw-r--r--source/blender/blenkernel/intern/collection.c4
-rw-r--r--source/blender/blenkernel/intern/curve.c4
-rw-r--r--source/blender/blenkernel/intern/font.c4
-rw-r--r--source/blender/blenkernel/intern/gpencil.c4
-rw-r--r--source/blender/blenkernel/intern/image.c4
-rw-r--r--source/blender/blenkernel/intern/lattice.c4
-rw-r--r--source/blender/blenkernel/intern/lib_id.c85
-rw-r--r--source/blender/blenkernel/intern/light.c4
-rw-r--r--source/blender/blenkernel/intern/lightprobe.c4
-rw-r--r--source/blender/blenkernel/intern/linestyle.c6
-rw-r--r--source/blender/blenkernel/intern/mask.c4
-rw-r--r--source/blender/blenkernel/intern/material.c4
-rw-r--r--source/blender/blenkernel/intern/mball.c4
-rw-r--r--source/blender/blenkernel/intern/mesh.c4
-rw-r--r--source/blender/blenkernel/intern/movieclip.c4
-rw-r--r--source/blender/blenkernel/intern/node.c4
-rw-r--r--source/blender/blenkernel/intern/object.c12
-rw-r--r--source/blender/blenkernel/intern/paint.c8
-rw-r--r--source/blender/blenkernel/intern/particle.c4
-rw-r--r--source/blender/blenkernel/intern/scene.c4
-rw-r--r--source/blender/blenkernel/intern/sound.c4
-rw-r--r--source/blender/blenkernel/intern/speaker.c4
-rw-r--r--source/blender/blenkernel/intern/text.c4
-rw-r--r--source/blender/blenkernel/intern/texture.c4
-rw-r--r--source/blender/blenkernel/intern/world.c4
-rw-r--r--source/blender/editors/interface/interface_templates.c5
-rw-r--r--source/blender/editors/space_outliner/outliner_tools.c2
-rw-r--r--source/blender/makesrna/intern/rna_ID.c9
63 files changed, 152 insertions, 161 deletions
diff --git a/source/blender/blenkernel/BKE_action.h b/source/blender/blenkernel/BKE_action.h
index 60d988ab21e..f74285b5313 100644
--- a/source/blender/blenkernel/BKE_action.h
+++ b/source/blender/blenkernel/BKE_action.h
@@ -57,7 +57,7 @@ struct bAction *BKE_action_copy(struct Main *bmain, const struct bAction *act_sr
/* Deallocate all of the Action's data, but not the Action itself */
void BKE_action_free(struct bAction *act);
-void BKE_action_make_local(struct Main *bmain, struct bAction *act, const bool lib_local);
+void BKE_action_make_local(struct Main *bmain, struct bAction *act, const int flags);
/* Action API ----------------- */
diff --git a/source/blender/blenkernel/BKE_armature.h b/source/blender/blenkernel/BKE_armature.h
index 583d8539c03..86d8362f5e6 100644
--- a/source/blender/blenkernel/BKE_armature.h
+++ b/source/blender/blenkernel/BKE_armature.h
@@ -68,7 +68,7 @@ struct bArmature *BKE_armature_from_object(struct Object *ob);
int BKE_armature_bonelist_count(struct ListBase *lb);
void BKE_armature_bonelist_free(struct ListBase *lb);
void BKE_armature_free(struct bArmature *arm);
-void BKE_armature_make_local(struct Main *bmain, struct bArmature *arm, const bool lib_local);
+void BKE_armature_make_local(struct Main *bmain, struct bArmature *arm, const int flags);
void BKE_armature_copy_data(struct Main *bmain,
struct bArmature *arm_dst,
const struct bArmature *arm_src,
diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h
index b6575094202..fd08ff9e219 100644
--- a/source/blender/blenkernel/BKE_brush.h
+++ b/source/blender/blenkernel/BKE_brush.h
@@ -55,7 +55,7 @@ void BKE_brush_copy_data(struct Main *bmain,
const struct Brush *brush_src,
const int flag);
struct Brush *BKE_brush_copy(struct Main *bmain, const struct Brush *brush);
-void BKE_brush_make_local(struct Main *bmain, struct Brush *brush, const bool lib_local);
+void BKE_brush_make_local(struct Main *bmain, struct Brush *brush, const int flags);
void BKE_brush_free(struct Brush *brush);
void BKE_brush_sculpt_reset(struct Brush *brush);
diff --git a/source/blender/blenkernel/BKE_cachefile.h b/source/blender/blenkernel/BKE_cachefile.h
index c8393fd3666..4f59356429f 100644
--- a/source/blender/blenkernel/BKE_cachefile.h
+++ b/source/blender/blenkernel/BKE_cachefile.h
@@ -51,7 +51,7 @@ struct CacheFile *BKE_cachefile_copy(struct Main *bmain, const struct CacheFile
void BKE_cachefile_make_local(struct Main *bmain,
struct CacheFile *cache_file,
- const bool lib_local);
+ const int flags);
void BKE_cachefile_reload(struct Depsgraph *depsgraph, struct CacheFile *cache_file);
diff --git a/source/blender/blenkernel/BKE_camera.h b/source/blender/blenkernel/BKE_camera.h
index d1c133c79b5..558ffd9e7c7 100644
--- a/source/blender/blenkernel/BKE_camera.h
+++ b/source/blender/blenkernel/BKE_camera.h
@@ -47,7 +47,7 @@ void BKE_camera_copy_data(struct Main *bmain,
const struct Camera *cam_src,
const int flag);
struct Camera *BKE_camera_copy(struct Main *bmain, const struct Camera *cam);
-void BKE_camera_make_local(struct Main *bmain, struct Camera *cam, const bool lib_local);
+void BKE_camera_make_local(struct Main *bmain, struct Camera *cam, const int flags);
void BKE_camera_free(struct Camera *ca);
/* Camera Usage */
diff --git a/source/blender/blenkernel/BKE_collection.h b/source/blender/blenkernel/BKE_collection.h
index 47ed42cade9..f0ec0c6765b 100644
--- a/source/blender/blenkernel/BKE_collection.h
+++ b/source/blender/blenkernel/BKE_collection.h
@@ -62,7 +62,7 @@ void BKE_collection_copy_data(struct Main *bmain,
const int flag);
void BKE_collection_make_local(struct Main *bmain,
struct Collection *collection,
- const bool lib_local);
+ const int flags);
struct Collection *BKE_collection_duplicate(struct Main *bmain,
struct Collection *parent,
diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h
index 1eff97bef2f..dd92ac181f9 100644
--- a/source/blender/blenkernel/BKE_curve.h
+++ b/source/blender/blenkernel/BKE_curve.h
@@ -85,7 +85,7 @@ void BKE_curve_copy_data(struct Main *bmain,
const struct Curve *cu_src,
const int flag);
struct Curve *BKE_curve_copy(struct Main *bmain, const struct Curve *cu);
-void BKE_curve_make_local(struct Main *bmain, struct Curve *cu, const bool lib_local);
+void BKE_curve_make_local(struct Main *bmain, struct Curve *cu, const int flags);
short BKE_curve_type_get(struct Curve *cu);
void BKE_curve_type_test(struct Object *ob);
void BKE_curve_curve_dimension_update(struct Curve *cu);
diff --git a/source/blender/blenkernel/BKE_font.h b/source/blender/blenkernel/BKE_font.h
index 1780ac9fc3e..31938c48529 100644
--- a/source/blender/blenkernel/BKE_font.h
+++ b/source/blender/blenkernel/BKE_font.h
@@ -82,7 +82,7 @@ struct VFont *BKE_vfont_load(struct Main *bmain, const char *filepath);
struct VFont *BKE_vfont_load_exists_ex(struct Main *bmain, const char *filepath, bool *r_exists);
struct VFont *BKE_vfont_load_exists(struct Main *bmain, const char *filepath);
-void BKE_vfont_make_local(struct Main *bmain, struct VFont *vfont, const bool lib_local);
+void BKE_vfont_make_local(struct Main *bmain, struct VFont *vfont, const int flags);
bool BKE_vfont_to_curve_ex(struct Object *ob,
struct Curve *cu,
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index 6e68c2a4593..1a186d2d682 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -99,7 +99,7 @@ struct bGPdata *BKE_gpencil_data_duplicate(struct Main *bmain,
const struct bGPdata *gpd,
bool internal_copy);
-void BKE_gpencil_make_local(struct Main *bmain, struct bGPdata *gpd, const bool lib_local);
+void BKE_gpencil_make_local(struct Main *bmain, struct bGPdata *gpd, const int flags);
void BKE_gpencil_frame_delete_laststroke(struct bGPDlayer *gpl, struct bGPDframe *gpf);
diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h
index e2bb1f988ca..81d8e20bf5e 100644
--- a/source/blender/blenkernel/BKE_image.h
+++ b/source/blender/blenkernel/BKE_image.h
@@ -142,7 +142,7 @@ struct anim *openanim_noload(const char *name,
int streamindex,
char colorspace[IMA_MAX_SPACE]);
-void BKE_image_make_local(struct Main *bmain, struct Image *ima, const bool lib_local);
+void BKE_image_make_local(struct Main *bmain, struct Image *ima, const int flags);
void BKE_image_tag_time(struct Image *ima);
diff --git a/source/blender/blenkernel/BKE_lattice.h b/source/blender/blenkernel/BKE_lattice.h
index 50f39dbd423..d2a5cc77cc6 100644
--- a/source/blender/blenkernel/BKE_lattice.h
+++ b/source/blender/blenkernel/BKE_lattice.h
@@ -49,7 +49,7 @@ void BKE_lattice_copy_data(struct Main *bmain,
const int flag);
struct Lattice *BKE_lattice_copy(struct Main *bmain, const struct Lattice *lt);
void BKE_lattice_free(struct Lattice *lt);
-void BKE_lattice_make_local(struct Main *bmain, struct Lattice *lt, const bool lib_local);
+void BKE_lattice_make_local(struct Main *bmain, struct Lattice *lt, const int flags);
void calc_lat_fudu(int flag, int res, float *r_fu, float *r_du);
struct LatticeDeformData *init_latt_deform(struct Object *oblatt,
diff --git a/source/blender/blenkernel/BKE_lib_id.h b/source/blender/blenkernel/BKE_lib_id.h
index fc4612554e9..cb86d54009b 100644
--- a/source/blender/blenkernel/BKE_lib_id.h
+++ b/source/blender/blenkernel/BKE_lib_id.h
@@ -190,11 +190,18 @@ void id_fake_user_set(struct ID *id);
void id_fake_user_clear(struct ID *id);
void BKE_id_clear_newpoin(struct ID *id);
-void BKE_lib_id_make_local_generic(struct Main *bmain, struct ID *id, const bool lib_local);
-bool BKE_lib_id_make_local(struct Main *bmain,
- struct ID *id,
- const bool test,
- const bool force_local);
+/** Flags to control make local code behaviour. */
+enum {
+ /** Making that ID local is part of making local a whole library. */
+ LIB_ID_MAKELOCAL_FULL_LIBRARY = 1 << 0,
+
+ /* Special type-specific options. */
+ /** For Objects, do not clear the proxy pointers while making the data-block local. */
+ LIB_ID_MAKELOCAL_OBJECT_NO_PROXY_CLEARING = 1 << 16,
+};
+
+void BKE_lib_id_make_local_generic(struct Main *bmain, struct ID *id, const int flags);
+bool BKE_lib_id_make_local(struct Main *bmain, struct ID *id, const bool test, const int flags);
bool id_single_user(struct bContext *C,
struct ID *id,
struct PointerRNA *ptr,
diff --git a/source/blender/blenkernel/BKE_light.h b/source/blender/blenkernel/BKE_light.h
index e060f587afe..932881ce4ad 100644
--- a/source/blender/blenkernel/BKE_light.h
+++ b/source/blender/blenkernel/BKE_light.h
@@ -41,7 +41,7 @@ void BKE_light_copy_data(struct Main *bmain,
const int flag);
struct Light *BKE_light_copy(struct Main *bmain, const struct Light *la) ATTR_WARN_UNUSED_RESULT;
struct Light *BKE_light_localize(struct Light *la) ATTR_WARN_UNUSED_RESULT;
-void BKE_light_make_local(struct Main *bmain, struct Light *la, const bool lib_local);
+void BKE_light_make_local(struct Main *bmain, struct Light *la, const int flags);
void BKE_light_free(struct Light *la);
#ifdef __cplusplus
diff --git a/source/blender/blenkernel/BKE_lightprobe.h b/source/blender/blenkernel/BKE_lightprobe.h
index dc9369ee56f..a294750fa9e 100644
--- a/source/blender/blenkernel/BKE_lightprobe.h
+++ b/source/blender/blenkernel/BKE_lightprobe.h
@@ -40,7 +40,7 @@ void BKE_lightprobe_copy_data(struct Main *bmain,
const struct LightProbe *probe_src,
const int flag);
struct LightProbe *BKE_lightprobe_copy(struct Main *bmain, const struct LightProbe *probe);
-void BKE_lightprobe_make_local(struct Main *bmain, struct LightProbe *probe, const bool lib_local);
+void BKE_lightprobe_make_local(struct Main *bmain, struct LightProbe *probe, const int flags);
void BKE_lightprobe_free(struct LightProbe *probe);
#ifdef __cplusplus
diff --git a/source/blender/blenkernel/BKE_linestyle.h b/source/blender/blenkernel/BKE_linestyle.h
index b8950e5df88..420f4b79e56 100644
--- a/source/blender/blenkernel/BKE_linestyle.h
+++ b/source/blender/blenkernel/BKE_linestyle.h
@@ -52,7 +52,7 @@ FreestyleLineStyle *BKE_linestyle_copy(struct Main *bmain, const FreestyleLineSt
void BKE_linestyle_make_local(struct Main *bmain,
struct FreestyleLineStyle *linestyle,
- const bool lib_local);
+ const int flags);
FreestyleLineStyle *BKE_linestyle_active_from_view_layer(struct ViewLayer *view_layer);
diff --git a/source/blender/blenkernel/BKE_mask.h b/source/blender/blenkernel/BKE_mask.h
index 99ce547df2d..cdfc406c0a6 100644
--- a/source/blender/blenkernel/BKE_mask.h
+++ b/source/blender/blenkernel/BKE_mask.h
@@ -149,7 +149,7 @@ void BKE_mask_copy_data(struct Main *bmain,
struct Mask *BKE_mask_copy_nolib(struct Mask *mask);
struct Mask *BKE_mask_copy(struct Main *bmain, const struct Mask *mask);
-void BKE_mask_make_local(struct Main *bmain, struct Mask *mask, const bool lib_local);
+void BKE_mask_make_local(struct Main *bmain, struct Mask *mask, const int flags);
void BKE_mask_free(struct Mask *mask);
diff --git a/source/blender/blenkernel/BKE_material.h b/source/blender/blenkernel/BKE_material.h
index 4bec0b1983e..6eba59ffe8c 100644
--- a/source/blender/blenkernel/BKE_material.h
+++ b/source/blender/blenkernel/BKE_material.h
@@ -62,7 +62,7 @@ void BKE_material_copy_data(struct Main *bmain,
const int flag);
struct Material *BKE_material_copy(struct Main *bmain, const struct Material *ma);
struct Material *BKE_material_localize(struct Material *ma);
-void BKE_material_make_local(struct Main *bmain, struct Material *ma, const bool lib_local);
+void BKE_material_make_local(struct Main *bmain, struct Material *ma, const int flags);
void BKE_gpencil_material_attr_init(struct Material *ma);
/* UNUSED */
diff --git a/source/blender/blenkernel/BKE_mball.h b/source/blender/blenkernel/BKE_mball.h
index 8150f066c9a..799ede4af9f 100644
--- a/source/blender/blenkernel/BKE_mball.h
+++ b/source/blender/blenkernel/BKE_mball.h
@@ -45,7 +45,7 @@ void BKE_mball_copy_data(struct Main *bmain,
const int flag);
struct MetaBall *BKE_mball_copy(struct Main *bmain, const struct MetaBall *mb);
-void BKE_mball_make_local(struct Main *bmain, struct MetaBall *mb, const bool lib_local);
+void BKE_mball_make_local(struct Main *bmain, struct MetaBall *mb, const int flags);
bool BKE_mball_is_any_selected(const struct MetaBall *mb);
bool BKE_mball_is_any_selected_multi(struct Base **bases, int bases_len);
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 1bc70101803..b62de1bff51 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -145,7 +145,7 @@ struct Mesh *BKE_mesh_new_nomain_from_curve_displist(struct Object *ob, struct L
bool BKE_mesh_ensure_facemap_customdata(struct Mesh *me);
bool BKE_mesh_clear_facemap_customdata(struct Mesh *me);
-void BKE_mesh_make_local(struct Main *bmain, struct Mesh *me, const bool lib_local);
+void BKE_mesh_make_local(struct Main *bmain, struct Mesh *me, const int flags);
float (*BKE_mesh_orco_verts_get(struct Object *ob))[3];
void BKE_mesh_orco_verts_transform(struct Mesh *me, float (*orco)[3], int totvert, int invert);
int test_index_face(struct MFace *mface, struct CustomData *mfdata, int mfindex, int nr);
diff --git a/source/blender/blenkernel/BKE_movieclip.h b/source/blender/blenkernel/BKE_movieclip.h
index f214d10eed0..d49fab78afa 100644
--- a/source/blender/blenkernel/BKE_movieclip.h
+++ b/source/blender/blenkernel/BKE_movieclip.h
@@ -43,7 +43,7 @@ void BKE_movieclip_copy_data(struct Main *bmain,
const struct MovieClip *clip_src,
const int flag);
struct MovieClip *BKE_movieclip_copy(struct Main *bmain, const struct MovieClip *clip);
-void BKE_movieclip_make_local(struct Main *bmain, struct MovieClip *clip, const bool lib_local);
+void BKE_movieclip_make_local(struct Main *bmain, struct MovieClip *clip, const int flags);
struct MovieClip *BKE_movieclip_file_add(struct Main *bmain, const char *name);
struct MovieClip *BKE_movieclip_file_add_exists_ex(struct Main *bmain,
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index fcf0cd6f165..9b184ef0e8c 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -399,7 +399,7 @@ struct bNodeTree **BKE_ntree_ptr_from_id(struct ID *id);
struct bNodeTree *ntreeFromID(struct ID *id);
struct ID *BKE_node_tree_find_owner_ID(struct Main *bmain, struct bNodeTree *ntree);
-void ntreeMakeLocal(struct Main *bmain, struct bNodeTree *ntree, const bool lib_local);
+void ntreeMakeLocal(struct Main *bmain, struct bNodeTree *ntree, const int flags);
void ntreeFreeLocalNode(struct bNodeTree *ntree, struct bNode *node);
void ntreeFreeLocalTree(struct bNodeTree *ntree);
struct bNode *ntreeFindType(const struct bNodeTree *ntree, int type);
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 8963f241ca8..3f004b453ca 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -140,11 +140,7 @@ void BKE_object_copy_data(struct Main *bmain,
const struct Object *ob_src,
const int flag);
struct Object *BKE_object_copy(struct Main *bmain, const struct Object *ob);
-void BKE_object_make_local(struct Main *bmain, struct Object *ob, const bool lib_local);
-void BKE_object_make_local_ex(struct Main *bmain,
- struct Object *ob,
- const bool lib_local,
- const bool clear_proxy);
+void BKE_object_make_local(struct Main *bmain, struct Object *ob, const int flags);
bool BKE_object_is_libdata(const struct Object *ob);
bool BKE_object_obdata_is_libdata(const struct Object *ob);
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index 9cc59557a4c..016012d7288 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -136,7 +136,7 @@ void BKE_palette_copy_data(struct Main *bmain,
const struct Palette *palette_src,
const int flag);
struct Palette *BKE_palette_copy(struct Main *bmain, const struct Palette *palette);
-void BKE_palette_make_local(struct Main *bmain, struct Palette *palette, const bool lib_local);
+void BKE_palette_make_local(struct Main *bmain, struct Palette *palette, const int flags);
struct PaletteColor *BKE_palette_color_add(struct Palette *palette);
bool BKE_palette_is_empty(const struct Palette *palette);
void BKE_palette_color_remove(struct Palette *palette, struct PaletteColor *color);
@@ -150,7 +150,7 @@ void BKE_paint_curve_copy_data(struct Main *bmain,
const struct PaintCurve *pc_src,
const int flag);
struct PaintCurve *BKE_paint_curve_copy(struct Main *bmain, const struct PaintCurve *pc);
-void BKE_paint_curve_make_local(struct Main *bmain, struct PaintCurve *pc, const bool lib_local);
+void BKE_paint_curve_make_local(struct Main *bmain, struct PaintCurve *pc, const int flags);
bool BKE_paint_ensure(struct ToolSettings *ts, struct Paint **r_paint);
void BKE_paint_init(struct Main *bmain, struct Scene *sce, ePaintMode mode, const char col[3]);
diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h
index b39fe65c03d..a7569951616 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -377,7 +377,7 @@ struct ParticleSettings *BKE_particlesettings_copy(struct Main *bmain,
const struct ParticleSettings *part);
void BKE_particlesettings_make_local(struct Main *bmain,
struct ParticleSettings *part,
- const bool lib_local);
+ const int flags);
void psys_reset(struct ParticleSystem *psys, int mode);
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index 40b4883349d..703c45f5c77 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -117,7 +117,7 @@ void BKE_scene_copy_data(struct Main *bmain,
struct Scene *BKE_scene_copy(struct Main *bmain, struct Scene *sce, int type);
void BKE_scene_groups_relink(struct Scene *sce);
-void BKE_scene_make_local(struct Main *bmain, struct Scene *sce, const bool lib_local);
+void BKE_scene_make_local(struct Main *bmain, struct Scene *sce, const int flags);
struct Scene *BKE_scene_find_from_collection(const struct Main *bmain,
const struct Collection *collection);
diff --git a/source/blender/blenkernel/BKE_sound.h b/source/blender/blenkernel/BKE_sound.h
index 6807d81daa3..e2866728bba 100644
--- a/source/blender/blenkernel/BKE_sound.h
+++ b/source/blender/blenkernel/BKE_sound.h
@@ -111,7 +111,7 @@ void BKE_sound_copy_data(struct Main *bmain,
const struct bSound *sound_src,
const int flag);
-void BKE_sound_make_local(struct Main *bmain, struct bSound *sound, const bool lib_local);
+void BKE_sound_make_local(struct Main *bmain, struct bSound *sound, const int flags);
#if defined(WITH_AUDASPACE)
AUD_Device *BKE_sound_mixdown(struct Scene *scene, AUD_DeviceSpecs specs, int start, float volume);
diff --git a/source/blender/blenkernel/BKE_speaker.h b/source/blender/blenkernel/BKE_speaker.h
index 6160f831158..a80a8062d39 100644
--- a/source/blender/blenkernel/BKE_speaker.h
+++ b/source/blender/blenkernel/BKE_speaker.h
@@ -36,7 +36,7 @@ void BKE_speaker_copy_data(struct Main *bmain,
const struct Speaker *spk_src,
const int flag);
struct Speaker *BKE_speaker_copy(struct Main *bmain, const struct Speaker *spk);
-void BKE_speaker_make_local(struct Main *bmain, struct Speaker *spk, const bool lib_local);
+void BKE_speaker_make_local(struct Main *bmain, struct Speaker *spk, const int flags);
void BKE_speaker_free(struct Speaker *spk);
#ifdef __cplusplus
diff --git a/source/blender/blenkernel/BKE_text.h b/source/blender/blenkernel/BKE_text.h
index 98a94c5f689..c999a50c48b 100644
--- a/source/blender/blenkernel/BKE_text.h
+++ b/source/blender/blenkernel/BKE_text.h
@@ -47,7 +47,7 @@ void BKE_text_copy_data(struct Main *bmain,
const struct Text *ta_src,
const int flag);
struct Text *BKE_text_copy(struct Main *bmain, const struct Text *ta);
-void BKE_text_make_local(struct Main *bmain, struct Text *text, const bool lib_local);
+void BKE_text_make_local(struct Main *bmain, struct Text *text, const int flags);
void BKE_text_clear(struct Text *text);
void BKE_text_write(struct Text *text, const char *str);
int BKE_text_file_modified_check(struct Text *text);
diff --git a/source/blender/blenkernel/BKE_texture.h b/source/blender/blenkernel/BKE_texture.h
index 39216e98e82..1d8b0b41c83 100644
--- a/source/blender/blenkernel/BKE_texture.h
+++ b/source/blender/blenkernel/BKE_texture.h
@@ -51,7 +51,7 @@ void BKE_texture_copy_data(struct Main *bmain,
struct Tex *BKE_texture_copy(struct Main *bmain, const struct Tex *tex);
struct Tex *BKE_texture_add(struct Main *bmain, const char *name);
struct Tex *BKE_texture_localize(struct Tex *tex);
-void BKE_texture_make_local(struct Main *bmain, struct Tex *tex, const bool lib_local);
+void BKE_texture_make_local(struct Main *bmain, struct Tex *tex, const int flags);
void BKE_texture_type_set(struct Tex *tex, int type);
void BKE_texture_mtex_default(struct MTex *mtex);
diff --git a/source/blender/blenkernel/BKE_world.h b/source/blender/blenkernel/BKE_world.h
index 9cbe80cc107..070ae2c045e 100644
--- a/source/blender/blenkernel/BKE_world.h
+++ b/source/blender/blenkernel/BKE_world.h
@@ -40,7 +40,7 @@ void BKE_world_copy_data(struct Main *bmain,
const int flag);
struct World *BKE_world_copy(struct Main *bmain, const struct World *wrld);
struct World *BKE_world_localize(struct World *wrld);
-void BKE_world_make_local(struct Main *bmain, struct World *wrld, const bool lib_local);
+void BKE_world_make_local(struct Main *bmain, struct World *wrld, const int flags);
void BKE_world_eval(struct Depsgraph *depsgraph, struct World *world);
#ifdef __cplusplus
diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c
index d9a3ec65a3e..bcacbccfb28 100644
--- a/source/blender/blenkernel/intern/action.c
+++ b/source/blender/blenkernel/intern/action.c
@@ -91,9 +91,9 @@ bAction *BKE_action_add(Main *bmain, const char name[])
/* .................................. */
// does copy_fcurve...
-void BKE_action_make_local(Main *bmain, bAction *act, const bool lib_local)
+void BKE_action_make_local(Main *bmain, bAction *act, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &act->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &act->id, flags);
}
/* .................................. */
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 1d4778e6720..476756d0580 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -136,9 +136,9 @@ void BKE_armature_free(bArmature *arm)
}
}
-void BKE_armature_make_local(Main *bmain, bArmature *arm, const bool lib_local)
+void BKE_armature_make_local(Main *bmain, bArmature *arm, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &arm->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &arm->id, flags);
}
static void copy_bonechildren(Bone *bone_dst,
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index aba7df0a936..8abad2d541d 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -766,8 +766,9 @@ void BKE_brush_free(Brush *brush)
BKE_previewimg_free(&(brush->preview));
}
-void BKE_brush_make_local(Main *bmain, Brush *brush, const bool lib_local)
+void BKE_brush_make_local(Main *bmain, Brush *brush, const int flags)
{
+ const bool lib_local = (flags & LIB_ID_MAKELOCAL_FULL_LIBRARY) != 0;
bool is_local = false, is_lib = false;
/* - only lib users: do nothing (unless force_local is set)
@@ -781,7 +782,7 @@ void BKE_brush_make_local(Main *bmain, Brush *brush, const bool lib_local)
if (brush->clone.image) {
/* Special case: ima always local immediately. Clone image should only have one user anyway. */
- BKE_lib_id_make_local(bmain, &brush->clone.image->id, false, false);
+ BKE_lib_id_make_local(bmain, &brush->clone.image->id, false, 0);
}
BKE_library_ID_test_usages(bmain, brush, &is_local, &is_lib);
diff --git a/source/blender/blenkernel/intern/cachefile.c b/source/blender/blenkernel/intern/cachefile.c
index db3202a6bf3..df15031b7bc 100644
--- a/source/blender/blenkernel/intern/cachefile.c
+++ b/source/blender/blenkernel/intern/cachefile.c
@@ -211,9 +211,9 @@ CacheFile *BKE_cachefile_copy(Main *bmain, const CacheFile *cache_file)
return cache_file_copy;
}
-void BKE_cachefile_make_local(Main *bmain, CacheFile *cache_file, const bool lib_local)
+void BKE_cachefile_make_local(Main *bmain, CacheFile *cache_file, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &cache_file->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &cache_file->id, flags);
}
void BKE_cachefile_reload(Depsgraph *depsgraph, CacheFile *cache_file)
diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c
index b27133ab93f..e21e093517e 100644
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@ -96,9 +96,9 @@ Camera *BKE_camera_copy(Main *bmain, const Camera *cam)
return cam_copy;
}
-void BKE_camera_make_local(Main *bmain, Camera *cam, const bool lib_local)
+void BKE_camera_make_local(Main *bmain, Camera *cam, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &cam->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &cam->id, flags);
}
/** Free (or release) any data used by this camera (does not free the camera itself). */
diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c
index 89e1d431cfb..2699121b63e 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -369,9 +369,9 @@ Collection *BKE_collection_duplicate(Main *bmain,
return collection_new;
}
-void BKE_collection_make_local(Main *bmain, Collection *collection, const bool lib_local)
+void BKE_collection_make_local(Main *bmain, Collection *collection, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &collection->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &collection->id, flags);
}
/********************************* Naming *******************************/
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index e8688cedd9f..81939dbaafc 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -220,9 +220,9 @@ Curve *BKE_curve_copy(Main *bmain, const Curve *cu)
return cu_copy;
}
-void BKE_curve_make_local(Main *bmain, Curve *cu, const bool lib_local)
+void BKE_curve_make_local(Main *bmain, Curve *cu, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &cu->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &cu->id, flags);
}
/* Get list of nurbs from editnurbs structure */
diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c
index 8d3606525d6..44c59bcb00c 100644
--- a/source/blender/blenkernel/intern/font.c
+++ b/source/blender/blenkernel/intern/font.c
@@ -325,9 +325,9 @@ VFont *BKE_vfont_load_exists(struct Main *bmain, const char *filepath)
return BKE_vfont_load_exists_ex(bmain, filepath, NULL);
}
-void BKE_vfont_make_local(Main *bmain, VFont *vfont, const bool lib_local)
+void BKE_vfont_make_local(Main *bmain, VFont *vfont, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &vfont->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &vfont->id, flags);
}
static VFont *which_vfont(Curve *cu, CharInfo *info)
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 5cd5724f07d..5713a93d740 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -707,9 +707,9 @@ bGPdata *BKE_gpencil_data_duplicate(Main *bmain, const bGPdata *gpd_src, bool in
return gpd_dst;
}
-void BKE_gpencil_make_local(Main *bmain, bGPdata *gpd, const bool lib_local)
+void BKE_gpencil_make_local(Main *bmain, bGPdata *gpd, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &gpd->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &gpd->id, flags);
}
/* ************************************************** */
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index bf59cfb4216..d54d9a03524 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -462,9 +462,9 @@ Image *BKE_image_copy(Main *bmain, const Image *ima)
return ima_copy;
}
-void BKE_image_make_local(Main *bmain, Image *ima, const bool lib_local)
+void BKE_image_make_local(Main *bmain, Image *ima, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &ima->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &ima->id, flags);
}
void BKE_image_merge(Main *bmain, Image *dest, Image *source)
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c
index 20d16df8e63..a7033946b2e 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -329,9 +329,9 @@ void BKE_lattice_free(Lattice *lt)
}
}
-void BKE_lattice_make_local(Main *bmain, Lattice *lt, const bool lib_local)
+void BKE_lattice_make_local(Main *bmain, Lattice *lt, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &lt->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &lt->id, flags);
}
typedef struct LatticeDeformData {
diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c
index fd1b70c18e3..73a03294c51 100644
--- a/source/blender/blenkernel/intern/lib_id.c
+++ b/source/blender/blenkernel/intern/lib_id.c
@@ -377,8 +377,9 @@ static void lib_id_copy_ensure_local(Main *bmain, const ID *old_id, ID *new_id)
/**
* Generic 'make local' function, works for most of data-block types...
*/
-void BKE_lib_id_make_local_generic(Main *bmain, ID *id, const bool lib_local)
+void BKE_lib_id_make_local_generic(Main *bmain, ID *id, const int flags)
{
+ const bool lib_local = (flags & LIB_ID_MAKELOCAL_FULL_LIBRARY) != 0;
bool is_local = false, is_lib = false;
/* - only lib users: do nothing (unless force_local is set)
@@ -436,8 +437,10 @@ void BKE_lib_id_make_local_generic(Main *bmain, ID *id, const bool lib_local)
*
* \return true if the block can be made local.
*/
-bool BKE_lib_id_make_local(Main *bmain, ID *id, const bool test, const bool lib_local)
+bool BKE_lib_id_make_local(Main *bmain, ID *id, const bool test, const int flags)
{
+ const bool lib_local = (flags & LIB_ID_MAKELOCAL_FULL_LIBRARY) != 0;
+
/* We don't care whether ID is directly or indirectly linked
* in case we are making a whole lib local... */
if (!lib_local && (id->tag & LIB_TAG_INDIRECT)) {
@@ -447,152 +450,152 @@ bool BKE_lib_id_make_local(Main *bmain, ID *id, const bool test, const bool lib_
switch ((ID_Type)GS(id->name)) {
case ID_SCE:
if (!test) {
- BKE_scene_make_local(bmain, (Scene *)id, lib_local);
+ BKE_scene_make_local(bmain, (Scene *)id, flags);
}
return true;
case ID_OB:
if (!test) {
- BKE_object_make_local(bmain, (Object *)id, lib_local);
+ BKE_object_make_local(bmain, (Object *)id, flags);
}
return true;
case ID_ME:
if (!test) {
- BKE_mesh_make_local(bmain, (Mesh *)id, lib_local);
+ BKE_mesh_make_local(bmain, (Mesh *)id, flags);
}
return true;
case ID_CU:
if (!test) {
- BKE_curve_make_local(bmain, (Curve *)id, lib_local);
+ BKE_curve_make_local(bmain, (Curve *)id, flags);
}
return true;
case ID_MB:
if (!test) {
- BKE_mball_make_local(bmain, (MetaBall *)id, lib_local);
+ BKE_mball_make_local(bmain, (MetaBall *)id, flags);
}
return true;
case ID_MA:
if (!test) {
- BKE_material_make_local(bmain, (Material *)id, lib_local);
+ BKE_material_make_local(bmain, (Material *)id, flags);
}
return true;
case ID_TE:
if (!test) {
- BKE_texture_make_local(bmain, (Tex *)id, lib_local);
+ BKE_texture_make_local(bmain, (Tex *)id, flags);
}
return true;
case ID_IM:
if (!test) {
- BKE_image_make_local(bmain, (Image *)id, lib_local);
+ BKE_image_make_local(bmain, (Image *)id, flags);
}
return true;
case ID_LT:
if (!test) {
- BKE_lattice_make_local(bmain, (Lattice *)id, lib_local);
+ BKE_lattice_make_local(bmain, (Lattice *)id, flags);
}
return true;
case ID_LA:
if (!test) {
- BKE_light_make_local(bmain, (Light *)id, lib_local);
+ BKE_light_make_local(bmain, (Light *)id, flags);
}
return true;
case ID_CA:
if (!test) {
- BKE_camera_make_local(bmain, (Camera *)id, lib_local);
+ BKE_camera_make_local(bmain, (Camera *)id, flags);
}
return true;
case ID_SPK:
if (!test) {
- BKE_speaker_make_local(bmain, (Speaker *)id, lib_local);
+ BKE_speaker_make_local(bmain, (Speaker *)id, flags);
}
return true;
case ID_LP:
if (!test) {
- BKE_lightprobe_make_local(bmain, (LightProbe *)id, lib_local);
+ BKE_lightprobe_make_local(bmain, (LightProbe *)id, flags);
}
return true;
case ID_WO:
if (!test) {
- BKE_world_make_local(bmain, (World *)id, lib_local);
+ BKE_world_make_local(bmain, (World *)id, flags);
}
return true;
case ID_VF:
if (!test) {
- BKE_vfont_make_local(bmain, (VFont *)id, lib_local);
+ BKE_vfont_make_local(bmain, (VFont *)id, flags);
}
return true;
case ID_TXT:
if (!test) {
- BKE_text_make_local(bmain, (Text *)id, lib_local);
+ BKE_text_make_local(bmain, (Text *)id, flags);
}
return true;
case ID_SO:
if (!test) {
- BKE_sound_make_local(bmain, (bSound *)id, lib_local);
+ BKE_sound_make_local(bmain, (bSound *)id, flags);
}
return true;
case ID_GR:
if (!test) {
- BKE_collection_make_local(bmain, (Collection *)id, lib_local);
+ BKE_collection_make_local(bmain, (Collection *)id, flags);
}
return true;
case ID_AR:
if (!test) {
- BKE_armature_make_local(bmain, (bArmature *)id, lib_local);
+ BKE_armature_make_local(bmain, (bArmature *)id, flags);
}
return true;
case ID_AC:
if (!test) {
- BKE_action_make_local(bmain, (bAction *)id, lib_local);
+ BKE_action_make_local(bmain, (bAction *)id, flags);
}
return true;
case ID_NT:
if (!test) {
- ntreeMakeLocal(bmain, (bNodeTree *)id, lib_local);
+ ntreeMakeLocal(bmain, (bNodeTree *)id, flags);
}
return true;
case ID_BR:
if (!test) {
- BKE_brush_make_local(bmain, (Brush *)id, lib_local);
+ BKE_brush_make_local(bmain, (Brush *)id, flags);
}
return true;
case ID_PA:
if (!test) {
- BKE_particlesettings_make_local(bmain, (ParticleSettings *)id, lib_local);
+ BKE_particlesettings_make_local(bmain, (ParticleSettings *)id, flags);
}
return true;
case ID_GD:
if (!test) {
- BKE_gpencil_make_local(bmain, (bGPdata *)id, lib_local);
+ BKE_gpencil_make_local(bmain, (bGPdata *)id, flags);
}
return true;
case ID_MC:
if (!test) {
- BKE_movieclip_make_local(bmain, (MovieClip *)id, lib_local);
+ BKE_movieclip_make_local(bmain, (MovieClip *)id, flags);
}
return true;
case ID_MSK:
if (!test) {
- BKE_mask_make_local(bmain, (Mask *)id, lib_local);
+ BKE_mask_make_local(bmain, (Mask *)id, flags);
}
return true;
case ID_LS:
if (!test) {
- BKE_linestyle_make_local(bmain, (FreestyleLineStyle *)id, lib_local);
+ BKE_linestyle_make_local(bmain, (FreestyleLineStyle *)id, flags);
}
return true;
case ID_PAL:
if (!test) {
- BKE_palette_make_local(bmain, (Palette *)id, lib_local);
+ BKE_palette_make_local(bmain, (Palette *)id, flags);
}
return true;
case ID_PC:
if (!test) {
- BKE_paint_curve_make_local(bmain, (PaintCurve *)id, lib_local);
+ BKE_paint_curve_make_local(bmain, (PaintCurve *)id, flags);
}
return true;
case ID_CF:
if (!test) {
- BKE_cachefile_make_local(bmain, (CacheFile *)id, lib_local);
+ BKE_cachefile_make_local(bmain, (CacheFile *)id, flags);
}
return true;
case ID_WS:
@@ -2232,16 +2235,14 @@ void BKE_library_make_local(Main *bmain,
}
else {
/* In this specific case, we do want to make ID local even if it has no local usage yet...
+ * Note that for objects, we don't want proxy pointers to be cleared yet. This will happen
+ * down the road in this function.
*/
- if (GS(id->name) == ID_OB) {
- /* Special case for objects because we don't want proxy pointers to be
- * cleared yet. This will happen down the road in this function.
- */
- BKE_object_make_local_ex(bmain, (Object *)id, true, false);
- }
- else {
- BKE_lib_id_make_local(bmain, id, false, true);
- }
+ BKE_lib_id_make_local(bmain,
+ id,
+ false,
+ LIB_ID_MAKELOCAL_FULL_LIBRARY |
+ LIB_ID_MAKELOCAL_OBJECT_NO_PROXY_CLEARING);
if (id->newid) {
if (GS(id->newid->name) == ID_OB) {
@@ -2344,7 +2345,7 @@ void BKE_library_make_local(Main *bmain,
else {
/* we can switch the proxy'ing from the linked-in to the made-local proxy.
* BKE_object_make_proxy() shouldn't be used here, as it allocates memory that
- * was already allocated by BKE_object_make_local_ex() (which called BKE_object_copy). */
+ * was already allocated by BKE_object_make_local() (which called BKE_object_copy). */
ob_new->proxy = ob->proxy;
ob_new->proxy_group = ob->proxy_group;
ob_new->proxy_from = ob->proxy_from;
diff --git a/source/blender/blenkernel/intern/light.c b/source/blender/blenkernel/intern/light.c
index 7f89c6f899f..7f8626df409 100644
--- a/source/blender/blenkernel/intern/light.c
+++ b/source/blender/blenkernel/intern/light.c
@@ -129,9 +129,9 @@ Light *BKE_light_localize(Light *la)
return lan;
}
-void BKE_light_make_local(Main *bmain, Light *la, const bool lib_local)
+void BKE_light_make_local(Main *bmain, Light *la, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &la->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &la->id, flags);
}
void BKE_light_free(Light *la)
diff --git a/source/blender/blenkernel/intern/lightprobe.c b/source/blender/blenkernel/intern/lightprobe.c
index 30fbcd4f540..55e7b90d8cf 100644
--- a/source/blender/blenkernel/intern/lightprobe.c
+++ b/source/blender/blenkernel/intern/lightprobe.c
@@ -101,9 +101,9 @@ LightProbe *BKE_lightprobe_copy(Main *bmain, const LightProbe *probe)
return probe_copy;
}
-void BKE_lightprobe_make_local(Main *bmain, LightProbe *probe, const bool lib_local)
+void BKE_lightprobe_make_local(Main *bmain, LightProbe *probe, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &probe->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &probe->id, flags);
}
void BKE_lightprobe_free(LightProbe *probe)
diff --git a/source/blender/blenkernel/intern/linestyle.c b/source/blender/blenkernel/intern/linestyle.c
index 0d7dc7e07e0..c8f21c3f959 100644
--- a/source/blender/blenkernel/intern/linestyle.c
+++ b/source/blender/blenkernel/intern/linestyle.c
@@ -186,11 +186,9 @@ FreestyleLineStyle *BKE_linestyle_copy(struct Main *bmain, const FreestyleLineSt
return linestyle_copy;
}
-void BKE_linestyle_make_local(struct Main *bmain,
- FreestyleLineStyle *linestyle,
- const bool lib_local)
+void BKE_linestyle_make_local(struct Main *bmain, FreestyleLineStyle *linestyle, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &linestyle->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &linestyle->id, flags);
}
FreestyleLineStyle *BKE_linestyle_active_from_view_layer(ViewLayer *view_layer)
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 170d870ec8a..28ed7606cbf 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -906,9 +906,9 @@ Mask *BKE_mask_copy(Main *bmain, const Mask *mask)
return mask_copy;
}
-void BKE_mask_make_local(Main *bmain, Mask *mask, const bool lib_local)
+void BKE_mask_make_local(Main *bmain, Mask *mask, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &mask->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &mask->id, flags);
}
void BKE_mask_point_free(MaskSplinePoint *point)
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index a60953f0ed1..af09b4a2db8 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -230,9 +230,9 @@ Material *BKE_material_localize(Material *ma)
return man;
}
-void BKE_material_make_local(Main *bmain, Material *ma, const bool lib_local)
+void BKE_material_make_local(Main *bmain, Material *ma, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &ma->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &ma->id, flags);
}
Material ***BKE_object_material_array(Object *ob)
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c
index c82928a4094..15a3229aaa7 100644
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@ -125,9 +125,9 @@ MetaBall *BKE_mball_copy(Main *bmain, const MetaBall *mb)
return mb_copy;
}
-void BKE_mball_make_local(Main *bmain, MetaBall *mb, const bool lib_local)
+void BKE_mball_make_local(Main *bmain, MetaBall *mb, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &mb->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &mb->id, flags);
}
/* most simple meta-element adding function
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index a483a354254..51f37254d8f 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -836,9 +836,9 @@ Mesh *BKE_mesh_from_editmesh_with_coords_thin_wrap(BMEditMesh *em,
return me;
}
-void BKE_mesh_make_local(Main *bmain, Mesh *me, const bool lib_local)
+void BKE_mesh_make_local(Main *bmain, Mesh *me, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &me->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &me->id, flags);
}
BoundBox *BKE_mesh_boundbox_get(Object *ob)
diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c
index 2afdb679518..8e64c02fbb3 100644
--- a/source/blender/blenkernel/intern/movieclip.c
+++ b/source/blender/blenkernel/intern/movieclip.c
@@ -1666,9 +1666,9 @@ MovieClip *BKE_movieclip_copy(Main *bmain, const MovieClip *clip)
return clip_copy;
}
-void BKE_movieclip_make_local(Main *bmain, MovieClip *clip, const bool lib_local)
+void BKE_movieclip_make_local(Main *bmain, MovieClip *clip, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &clip->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &clip->id, flags);
}
float BKE_movieclip_remap_scene_to_clip_frame(const MovieClip *clip, float framenr)
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 5850e1265f9..4793ca93a3b 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -2296,9 +2296,9 @@ ID *BKE_node_tree_find_owner_ID(Main *bmain, struct bNodeTree *ntree)
return NULL;
}
-void ntreeMakeLocal(Main *bmain, bNodeTree *ntree, const bool lib_local)
+void ntreeMakeLocal(Main *bmain, bNodeTree *ntree, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &ntree->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &ntree->id, flags);
}
int ntreeNodeExists(bNodeTree *ntree, bNode *testnode)
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index e9aec7201e2..8d9bffa1637 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1741,11 +1741,10 @@ Object *BKE_object_duplicate(Main *bmain, const Object *ob, const int dupflag)
return obn;
}
-void BKE_object_make_local_ex(Main *bmain,
- Object *ob,
- const bool lib_local,
- const bool clear_proxy)
+void BKE_object_make_local(Main *bmain, Object *ob, const int flags)
{
+ const bool lib_local = (flags & LIB_ID_MAKELOCAL_FULL_LIBRARY) != 0;
+ const bool clear_proxy = (flags & LIB_ID_MAKELOCAL_OBJECT_NO_PROXY_CLEARING) == 0;
bool is_local = false, is_lib = false;
/* - only lib users: do nothing (unless force_local is set)
@@ -1789,11 +1788,6 @@ void BKE_object_make_local_ex(Main *bmain,
}
}
-void BKE_object_make_local(Main *bmain, Object *ob, const bool lib_local)
-{
- BKE_object_make_local_ex(bmain, ob, lib_local, true);
-}
-
/* Returns true if the Object is from an external blend file (libdata) */
bool BKE_object_is_libdata(const Object *ob)
{
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 8466f67730f..9f05b1656cd 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -517,9 +517,9 @@ PaintCurve *BKE_paint_curve_copy(Main *bmain, const PaintCurve *pc)
return pc_copy;
}
-void BKE_paint_curve_make_local(Main *bmain, PaintCurve *pc, const bool lib_local)
+void BKE_paint_curve_make_local(Main *bmain, PaintCurve *pc, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &pc->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &pc->id, flags);
}
Palette *BKE_paint_palette(Paint *p)
@@ -604,9 +604,9 @@ Palette *BKE_palette_copy(Main *bmain, const Palette *palette)
return palette_copy;
}
-void BKE_palette_make_local(Main *bmain, Palette *palette, const bool lib_local)
+void BKE_palette_make_local(Main *bmain, Palette *palette, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &palette->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &palette->id, flags);
}
void BKE_palette_init(Palette *palette)
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index dce7d643713..a8e43df15a3 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -3837,9 +3837,9 @@ ParticleSettings *BKE_particlesettings_copy(Main *bmain, const ParticleSettings
return part_copy;
}
-void BKE_particlesettings_make_local(Main *bmain, ParticleSettings *part, const bool lib_local)
+void BKE_particlesettings_make_local(Main *bmain, ParticleSettings *part, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &part->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &part->id, flags);
}
/************************************************/
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 59242d5159c..272ce404c35 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -488,11 +488,11 @@ void BKE_scene_groups_relink(Scene *sce)
}
}
-void BKE_scene_make_local(Main *bmain, Scene *sce, const bool lib_local)
+void BKE_scene_make_local(Main *bmain, Scene *sce, const int flags)
{
/* For now should work, may need more work though to support all possible corner cases
* (also scene_copy probably needs some love). */
- BKE_lib_id_make_local_generic(bmain, &sce->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &sce->id, flags);
}
/** Free (or release) any data used by this scene (does not free the scene itself). */
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c
index ffaec89f579..cd38030faf4 100644
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@ -217,9 +217,9 @@ void BKE_sound_copy_data(Main *UNUSED(bmain),
BKE_sound_reset_runtime(sound_dst);
}
-void BKE_sound_make_local(Main *bmain, bSound *sound, const bool lib_local)
+void BKE_sound_make_local(Main *bmain, bSound *sound, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &sound->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &sound->id, flags);
}
#ifdef WITH_AUDASPACE
diff --git a/source/blender/blenkernel/intern/speaker.c b/source/blender/blenkernel/intern/speaker.c
index e4c85fda03c..fb16cea093e 100644
--- a/source/blender/blenkernel/intern/speaker.c
+++ b/source/blender/blenkernel/intern/speaker.c
@@ -74,9 +74,9 @@ Speaker *BKE_speaker_copy(Main *bmain, const Speaker *spk)
return spk_copy;
}
-void BKE_speaker_make_local(Main *bmain, Speaker *spk, const bool lib_local)
+void BKE_speaker_make_local(Main *bmain, Speaker *spk, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &spk->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &spk->id, flags);
}
void BKE_speaker_free(Speaker *spk)
diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c
index 09e01723543..c20ef21f486 100644
--- a/source/blender/blenkernel/intern/text.c
+++ b/source/blender/blenkernel/intern/text.c
@@ -441,9 +441,9 @@ Text *BKE_text_copy(Main *bmain, const Text *ta)
return ta_copy;
}
-void BKE_text_make_local(Main *bmain, Text *text, const bool lib_local)
+void BKE_text_make_local(Main *bmain, Text *text, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &text->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &text->id, flags);
}
void BKE_text_clear(Text *text) /* called directly from rna */
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index 61c48ebbe58..565426e2960 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -386,9 +386,9 @@ Tex *BKE_texture_localize(Tex *tex)
/* ------------------------------------------------------------------------- */
-void BKE_texture_make_local(Main *bmain, Tex *tex, const bool lib_local)
+void BKE_texture_make_local(Main *bmain, Tex *tex, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &tex->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &tex->id, flags);
}
Tex *give_current_linestyle_texture(FreestyleLineStyle *linestyle)
diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c
index d6e28932a36..f8ba4e3085e 100644
--- a/source/blender/blenkernel/intern/world.c
+++ b/source/blender/blenkernel/intern/world.c
@@ -154,9 +154,9 @@ World *BKE_world_localize(World *wrld)
return wrldn;
}
-void BKE_world_make_local(Main *bmain, World *wrld, const bool lib_local)
+void BKE_world_make_local(Main *bmain, World *wrld, const int flags)
{
- BKE_lib_id_make_local_generic(bmain, &wrld->id, lib_local);
+ BKE_lib_id_make_local_generic(bmain, &wrld->id, flags);
}
void BKE_world_eval(struct Depsgraph *depsgraph, World *world)
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 7a80baf1b80..1566c9c4e88 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -557,7 +557,7 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
}
}
else {
- if (BKE_lib_id_make_local(bmain, id, false, false)) {
+ if (BKE_lib_id_make_local(bmain, id, false, 0)) {
BKE_main_id_clear_newpoins(bmain);
/* reassign to get get proper updates/notifiers */
@@ -879,8 +879,7 @@ static void template_ID(bContext *C,
UI_but_flag_enable(but, UI_BUT_DISABLED);
}
else {
- const bool disabled = (!BKE_lib_id_make_local(
- CTX_data_main(C), id, true /* test */, false) ||
+ const bool disabled = (!BKE_lib_id_make_local(CTX_data_main(C), id, true /* test */, 0) ||
(idfrom && idfrom->lib));
but = uiDefIconBut(block,
UI_BTYPE_BUT,
diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c
index 5a3663a12b9..2cf106ea07d 100644
--- a/source/blender/editors/space_outliner/outliner_tools.c
+++ b/source/blender/editors/space_outliner/outliner_tools.c
@@ -698,7 +698,7 @@ static void id_local_cb(bContext *C,
Main *bmain = CTX_data_main(C);
/* if the ID type has no special local function,
* just clear the lib */
- if (BKE_lib_id_make_local(bmain, tselem->id, false, false) == false) {
+ if (BKE_lib_id_make_local(bmain, tselem->id, false, 0) == false) {
BKE_lib_id_clear_library_data(bmain, tselem->id);
}
else {
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index b1c20bcd8f2..bf2c162a179 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -582,13 +582,8 @@ static void rna_ID_user_remap(ID *id, Main *bmain, ID *new_id)
static struct ID *rna_ID_make_local(struct ID *self, Main *bmain, bool clear_proxy)
{
- /* Special case, as we can't rely on BKE_lib_id_make_local(); it clears proxies. */
- if (!clear_proxy && GS(self->name) == ID_OB) {
- BKE_object_make_local_ex(bmain, (Object *)self, false, clear_proxy);
- }
- else {
- BKE_lib_id_make_local(bmain, self, false, false);
- }
+ BKE_lib_id_make_local(
+ bmain, self, false, clear_proxy ? 0 : LIB_ID_MAKELOCAL_OBJECT_NO_PROXY_CLEARING);
ID *ret_id = self->newid ? self->newid : self;
BKE_id_clear_newpoin(self);