diff options
21 files changed, 129 insertions, 118 deletions
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index a240e79e473..f397e6be2c9 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -103,7 +103,7 @@ extern int BKE_undo_save_file(const char *filename); extern struct Main *BKE_undo_get_main(struct Scene **scene); /* copybuffer */ -void BKE_copybuffer_begin(void); +void BKE_copybuffer_begin(struct Main *bmain); void BKE_copybuffer_tag_ID(struct ID *id); int BKE_copybuffer_save(const char *filename, struct ReportList *reports); int BKE_copybuffer_paste(struct bContext *C, const char *libname, struct ReportList *reports); diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h index cad3f264fb8..cb0ab239d44 100644 --- a/source/blender/blenkernel/BKE_library.h +++ b/source/blender/blenkernel/BKE_library.h @@ -78,19 +78,29 @@ void BKE_libblock_free_ex(struct ListBase *lb, void *idv, bool do_id_user); void BKE_libblock_free_us(struct ListBase *lb, void *idv); void BKE_libblock_free_data(struct ID *id); + +/* Main API */ struct Main *BKE_main_new(void); -void free_main(struct Main *mainvar); +void BKE_main_free(struct Main *mainvar); + +void BKE_main_id_tag_idcode(struct Main *mainvar, const short type, const bool tag); +void BKE_main_id_tag_listbase(struct ListBase *lb, const bool tag); +void BKE_main_id_tag_all(struct Main *mainvar, const bool tag); + +void BKE_main_id_flag_listbase(ListBase *lb, const short flag, const bool value); +void BKE_main_id_flag_all(struct Main *bmain, const short flag, const bool value); + +void BKE_main_id_clear_newpoins(struct Main *bmain); -void tag_main_idcode(struct Main *mainvar, const short type, const short tag); -void tag_main_lb(struct ListBase *lb, const short tag); -void tag_main(struct Main *mainvar, const short tag); +void BKE_main_lib_objects_recalc_all(struct Main *bmain); void rename_id(struct ID *id, const char *name); void name_uiprefix_id(char *name, const struct ID *id); void test_idbutton(char *name); + void BKE_library_make_local(struct Main *bmain, struct Library *lib, bool untagged_only); + struct ID *BKE_libblock_find_name(const short type, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); -void clear_id_newpoins(void); #if 0 void IDnames_to_pupstring(const char **str, const char *title, const char *extraops, @@ -99,10 +109,6 @@ void IMAnames_to_pupstring(const char **str, const char *title, const char *extr struct ListBase *lb, struct ID *link, short *nr); #endif -void flag_listbase_ids(ListBase *lb, short flag, short value); -void flag_all_listbases_ids(short flag, short value); -void recalc_all_library_objects(struct Main *main); - void set_free_windowmanager_cb(void (*func)(struct bContext *, struct wmWindowManager *) ); void set_free_notifier_reference_cb(void (*func)(const void *) ); diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 5b40e3ae68e..5b8eb13a5e7 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -113,7 +113,7 @@ char versionstr[48] = ""; void free_blender(void) { /* samples are in a global list..., also sets G.main->sound->sample NULL */ - free_main(G.main); + BKE_main_free(G.main); G.main = NULL; BKE_spacetypes_free(); /* after free main, it uses space callbacks */ @@ -164,7 +164,7 @@ static void clear_global(void) { // extern short winqueue_break; /* screen.c */ - free_main(G.main); /* free all lib data */ + BKE_main_free(G.main); /* free all lib data */ // free_vertexpaint(); @@ -449,7 +449,7 @@ int BKE_read_file(bContext *C, const char *filepath, ReportList *reports) if (bfd->user) retval = BKE_READ_FILE_OK_USERPREFS; if (0 == handle_subversion_warning(bfd->main, reports)) { - free_main(bfd->main); + BKE_main_free(bfd->main); MEM_freeN(bfd); bfd = NULL; retval = BKE_READ_FILE_FAIL; @@ -516,7 +516,7 @@ int BKE_read_file_userdef(const char *filepath, ReportList *reports) U = *bfd->user; MEM_freeN(bfd->user); } - free_main(bfd->main); + BKE_main_free(bfd->main); MEM_freeN(bfd); return retval; @@ -870,10 +870,10 @@ Main *BKE_undo_get_main(Scene **scene) /* assumes data is in G.main */ -void BKE_copybuffer_begin(void) +void BKE_copybuffer_begin(Main *bmain) { /* set all id flags to zero; */ - flag_all_listbases_ids(LIB_NEED_EXPAND | LIB_DOIT, 0); + BKE_main_id_flag_all(bmain, LIB_NEED_EXPAND | LIB_DOIT, false); } void BKE_copybuffer_tag_ID(ID *id) @@ -943,7 +943,7 @@ int BKE_copybuffer_save(const char *filename, ReportList *reports) MEM_freeN(mainb); /* set id flag to zero; */ - flag_all_listbases_ids(LIB_NEED_EXPAND | LIB_DOIT, 0); + BKE_main_id_flag_all(G.main, LIB_NEED_EXPAND | LIB_DOIT, false); if (path_list_backup) { BKE_bpath_list_restore(G.main, path_list_flag, path_list_backup); @@ -974,8 +974,8 @@ int BKE_copybuffer_paste(bContext *C, const char *libname, ReportList *reports) /* tag everything, all untagged data can be made local * its also generally useful to know what is new * - * take extra care flag_all_listbases_ids(LIB_LINK_TAG, 0) is called after! */ - flag_all_listbases_ids(LIB_PRE_EXISTING, 1); + * take extra care BKE_main_id_flag_all(bmain, LIB_LINK_TAG, false) is called after! */ + BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, true); /* here appending/linking starts */ mainl = BLO_library_append_begin(bmain, &bh, libname); @@ -985,7 +985,7 @@ int BKE_copybuffer_paste(bContext *C, const char *libname, ReportList *reports) BLO_library_append_end(C, mainl, &bh, 0, 0); /* mark all library linked objects to be updated */ - recalc_all_library_objects(bmain); + BKE_main_lib_objects_recalc_all(bmain); IMB_colormanagement_check_file_config(bmain); /* append, rather than linking */ @@ -994,7 +994,7 @@ int BKE_copybuffer_paste(bContext *C, const char *libname, ReportList *reports) /* important we unset, otherwise these object wont * link into other scenes from this blend file */ - flag_all_listbases_ids(LIB_PRE_EXISTING, 0); + BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false); /* recreate dependency graph to include new objects */ DAG_relations_tag_update(bmain); diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 6376878c664..cdbf59d688b 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -894,9 +894,9 @@ DagForest *build_dag(Main *bmain, Scene *sce, short mask) } /* clear "LIB_DOIT" flag from all materials, to prevent infinite recursion problems later [#32017] */ - tag_main_idcode(bmain, ID_MA, FALSE); - tag_main_idcode(bmain, ID_LA, FALSE); - tag_main_idcode(bmain, ID_GR, FALSE); + BKE_main_id_tag_idcode(bmain, ID_MA, false); + BKE_main_id_tag_idcode(bmain, ID_LA, false); + BKE_main_id_tag_idcode(bmain, ID_GR, false); /* add base node for scene. scene is always the first node in DAG */ scenenode = dag_add_node(dag, sce); @@ -912,7 +912,7 @@ DagForest *build_dag(Main *bmain, Scene *sce, short mask) build_dag_group(dag, scenenode, sce, ob->dup_group, mask); } - tag_main_idcode(bmain, ID_GR, FALSE); + BKE_main_id_tag_idcode(bmain, ID_GR, false); /* Now all relations were built, but we need to solve 1 exceptional case; * When objects have multiple "parents" (for example parent + constraint working on same object) @@ -2003,7 +2003,7 @@ void DAG_scene_update_flags(Main *bmain, Scene *scene, unsigned int lay, const s GroupObject *go; Scene *sce_iter; - tag_main_idcode(bmain, ID_GR, FALSE); + BKE_main_id_tag_idcode(bmain, ID_GR, false); /* set ob flags where animated systems are */ for (SETLOOPER(scene, sce_iter, base)) { @@ -2071,7 +2071,7 @@ static void dag_current_scene_layers(Main *bmain, ListBase *lb) /* if we have a windowmanager, look into windows */ if ((wm = bmain->wm.first)) { - flag_listbase_ids(&bmain->scene, LIB_DOIT, 1); + BKE_main_id_flag_listbase(&bmain->scene, LIB_DOIT, 1); for (win = wm->windows.first; win; win = win->next) { if (win->screen && win->screen->scene->theDag) { @@ -2146,7 +2146,7 @@ void DAG_on_visible_update(Main *bmain, const short do_time) * note armature poses or object matrices are preserved and do not * require updates, so we skip those */ dag_scene_flush_layers(scene, lay); - tag_main_idcode(bmain, ID_GR, FALSE); + BKE_main_id_tag_idcode(bmain, ID_GR, false); for (SETLOOPER(scene, sce_iter, base)) { ob = base->object; @@ -2163,7 +2163,7 @@ void DAG_on_visible_update(Main *bmain, const short do_time) } } - tag_main_idcode(bmain, ID_GR, FALSE); + BKE_main_id_tag_idcode(bmain, ID_GR, false); /* now tag update flags, to ensure deformers get calculated on redraw */ DAG_scene_update_flags(bmain, scene, lay, do_time); diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 43bd6a0b36c..9fa9ce6f55c 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -522,33 +522,35 @@ ListBase *which_libbase(Main *mainlib, short type) } /* Flag all ids in listbase */ -void flag_listbase_ids(ListBase *lb, short flag, short value) +void BKE_main_id_flag_listbase(ListBase *lb, const short flag, const bool value) { ID *id; if (value) { for (id = lb->first; id; id = id->next) id->flag |= flag; } else { - flag = ~flag; - for (id = lb->first; id; id = id->next) id->flag &= flag; + const short nflag = ~flag; + for (id = lb->first; id; id = id->next) id->flag &= nflag; } } /* Flag all ids in listbase */ -void flag_all_listbases_ids(short flag, short value) +void BKE_main_id_flag_all(Main *bmain, const short flag, const bool value) { ListBase *lbarray[MAX_LIBARRAY]; int a; - a = set_listbasepointers(G.main, lbarray); - while (a--) flag_listbase_ids(lbarray[a], flag, value); + a = set_listbasepointers(bmain, lbarray); + while (a--) { + BKE_main_id_flag_listbase(lbarray[a], flag, value); + } } -void recalc_all_library_objects(Main *main) +void BKE_main_lib_objects_recalc_all(Main *bmain) { Object *ob; /* flag for full recalc */ - for (ob = main->object.first; ob; ob = ob->id.next) + for (ob = bmain->object.first; ob; ob = ob->id.next) if (ob->id.lib) ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; } @@ -1017,7 +1019,7 @@ Main *BKE_main_new(void) return bmain; } -void free_main(Main *mainvar) +void BKE_main_free(Main *mainvar) { /* also call when reading a file, erase all, etc */ ListBase *lbarray[MAX_LIBARRAY]; @@ -1436,8 +1438,10 @@ bool new_id(ListBase *lb, ID *id, const char *tname) return result; } -/* Pull an ID out of a library (make it local). Only call this for IDs that - * don't have other library users. */ +/** + * Pull an ID out of a library (make it local). Only call this for IDs that + * don't have other library users. + */ void id_clear_lib_data(Main *bmain, ID *id) { bNodeTree *ntree = NULL; @@ -1463,13 +1467,13 @@ void id_clear_lib_data(Main *bmain, ID *id) } /* next to indirect usage in read/writefile also in editobject.c scene.c */ -void clear_id_newpoins(void) +void BKE_main_id_clear_newpoins(Main *bmain) { ListBase *lbarray[MAX_LIBARRAY]; ID *id; int a; - a = set_listbasepointers(G.main, lbarray); + a = set_listbasepointers(bmain, lbarray); while (a--) { id = lbarray[a]->first; while (id) { @@ -1526,7 +1530,7 @@ static void lib_indirect_test_id(ID *id, Library *lib) #undef LIBTAG } -void tag_main_lb(ListBase *lb, const short tag) +void BKE_main_id_tag_listbase(ListBase *lb, const bool tag) { ID *id; if (tag) { @@ -1541,21 +1545,21 @@ void tag_main_lb(ListBase *lb, const short tag) } } -void tag_main_idcode(struct Main *mainvar, const short type, const short tag) +void BKE_main_id_tag_idcode(struct Main *mainvar, const short type, const bool tag) { ListBase *lb = which_libbase(mainvar, type); - tag_main_lb(lb, tag); + BKE_main_id_tag_listbase(lb, tag); } -void tag_main(struct Main *mainvar, const short tag) +void BKE_main_id_tag_all(struct Main *mainvar, const bool tag) { ListBase *lbarray[MAX_LIBARRAY]; int a; a = set_listbasepointers(mainvar, lbarray); while (a--) { - tag_main_lb(lbarray[a], tag); + BKE_main_id_tag_listbase(lbarray[a], tag); } } diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 3ca702e0068..cda1cea4171 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -175,7 +175,7 @@ Scene *BKE_scene_copy(Scene *sce, int type) scen = BKE_libblock_copy(&sce->id); BLI_duplicatelist(&(scen->base), &(sce->base)); - clear_id_newpoins(); + BKE_main_id_clear_newpoins(G.main); id_us_plus((ID *)scen->world); id_us_plus((ID *)scen->set); @@ -1440,8 +1440,8 @@ void BKE_scene_update_tagged(EvaluationContext *eval_ctx, Main *bmain, Scene *sc /* clear "LIB_DOIT" flag from all materials, to prevent infinite recursion problems later * when trying to find materials with drivers that need evaluating [#32017] */ - tag_main_idcode(bmain, ID_MA, FALSE); - tag_main_idcode(bmain, ID_LA, FALSE); + BKE_main_id_tag_idcode(bmain, ID_MA, false); + BKE_main_id_tag_idcode(bmain, ID_LA, false); /* update all objects: drivers, matrices, displists, etc. flags set * by depgraph or manual, no layer check here, gets correct flushed @@ -1521,8 +1521,8 @@ void BKE_scene_update_for_newframe(EvaluationContext *eval_ctx, Main *bmain, Sce /* clear "LIB_DOIT" flag from all materials, to prevent infinite recursion problems later * when trying to find materials with drivers that need evaluating [#32017] */ - tag_main_idcode(bmain, ID_MA, FALSE); - tag_main_idcode(bmain, ID_LA, FALSE); + BKE_main_id_tag_idcode(bmain, ID_MA, false); + BKE_main_id_tag_idcode(bmain, ID_LA, false); /* run rigidbody sim */ /* NOTE: current position is so that rigidbody sim affects other objects, might change in the future */ diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c index 9ae2858f526..b03d250e868 100644 --- a/source/blender/blenloader/intern/readblenentry.c +++ b/source/blender/blenloader/intern/readblenentry.c @@ -53,7 +53,7 @@ #include "BKE_main.h" -#include "BKE_library.h" // for free_main +#include "BKE_library.h" // for BKE_main_free #include "BKE_idcode.h" #include "BKE_report.h" @@ -343,7 +343,7 @@ BlendFileData *BLO_read_from_memfile(Main *oldmain, const char *filename, MemFil void BLO_blendfiledata_free(BlendFileData *bfd) { if (bfd->main) { - free_main(bfd->main); + BKE_main_free(bfd->main); } if (bfd->user) { diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 035a917d37f..ed501d50b07 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -8946,7 +8946,7 @@ static Main *library_append_begin(Main *mainvar, FileData **fd, const char *file (*fd)->mainlist = MEM_callocN(sizeof(ListBase), "FileData.mainlist"); /* clear for group instancing tag */ - tag_main_lb(&(mainvar->group), 0); + BKE_main_id_tag_listbase(&(mainvar->group), false); /* make mains */ blo_split_main((*fd)->mainlist, mainvar); @@ -9026,7 +9026,7 @@ static void library_append_end(const bContext *C, Main *mainl, FileData **fd, in } /* clear group instancing tag */ - tag_main_lb(&(mainvar->group), 0); + BKE_main_id_tag_listbase(&(mainvar->group), false); /* has been removed... erm, why? s..ton) */ /* 20040907: looks like they are give base already in append_named_part(); -Nathan L */ diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 669d762029a..486e278c00c 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1093,7 +1093,7 @@ static int object_delete_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; /* delete has to handle all open scenes */ - flag_listbase_ids(&bmain->scene, LIB_DOIT, 1); + BKE_main_id_flag_listbase(&bmain->scene, LIB_DOIT, 1); for (win = wm->windows.first; win; win = win->next) { scene = win->screen->scene; @@ -1216,7 +1216,7 @@ static void copy_object_set_idnew(bContext *C, int dupflag) set_sca_new_poins(); - clear_id_newpoins(); + BKE_main_id_clear_newpoins(bmain); } /********************* Make Duplicates Real ************************/ @@ -1369,7 +1369,7 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) const short use_base_parent = RNA_boolean_get(op->ptr, "use_base_parent"); const short use_hierarchy = RNA_boolean_get(op->ptr, "use_hierarchy"); - clear_id_newpoins(); + BKE_main_id_clear_newpoins(bmain); CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { @@ -2029,7 +2029,7 @@ Base *ED_object_add_duplicate(Main *bmain, Scene *scene, Base *base, int dupflag Base *basen; Object *ob; - clear_id_newpoins(); + BKE_main_id_clear_newpoins(bmain); clear_sca_new_poins(); /* sensor/contr/act */ basen = object_add_duplicate_internal(bmain, scene, base, dupflag); @@ -2060,7 +2060,7 @@ static int duplicate_exec(bContext *C, wmOperator *op) int linked = RNA_boolean_get(op->ptr, "linked"); int dupflag = (linked) ? 0 : U.dupflag; - clear_id_newpoins(); + BKE_main_id_clear_newpoins(bmain); clear_sca_new_poins(); /* sensor/contr/act */ CTX_DATA_BEGIN (C, Base *, base, selected_bases) @@ -2141,7 +2141,7 @@ static int add_named_exec(bContext *C, wmOperator *op) base->flag = ob->flag; /* prepare dupli */ - clear_id_newpoins(); + BKE_main_id_clear_newpoins(bmain); clear_sca_new_poins(); /* sensor/contr/act */ basen = object_add_duplicate_internal(bmain, scene, base, dupflag); diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c index 7e0bd2a4da7..2f27b45c055 100644 --- a/source/blender/editors/object/object_group.c +++ b/source/blender/editors/object/object_group.c @@ -188,7 +188,7 @@ static int objects_add_active_exec(bContext *C, wmOperator *op) continue; /* for recursive check */ - tag_main_lb(&bmain->group, TRUE); + BKE_main_id_tag_listbase(&bmain->group, true); CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { @@ -494,7 +494,7 @@ static int group_link_exec(bContext *C, wmOperator *op) * It is also bad idea to add object to group which is in group which * contains our current object. */ - tag_main_lb(&bmain->group, TRUE); + BKE_main_id_tag_listbase(&bmain->group, true); if (ob->dup_group == group || check_group_contains_object_recursive(group, ob)) { BKE_report(op->reports, RPT_ERROR, "Could not add the group because of dependency cycle detected"); return OPERATOR_CANCELLED; diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index b3a2a7b6e0b..6d33ba673f3 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -2050,7 +2050,7 @@ void ED_object_single_users(Main *bmain, Scene *scene, bool full, bool copy_grou single_tex_users_expand(bmain); } - clear_id_newpoins(); + BKE_main_id_clear_newpoins(bmain); } /******************************* Make Local ***********************************/ @@ -2096,7 +2096,7 @@ static int make_local_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } - clear_id_newpoins(); + BKE_main_id_clear_newpoins(bmain); CTX_DATA_BEGIN (C, Object *, ob, selected_objects) { @@ -2212,7 +2212,7 @@ static int make_single_user_exec(bContext *C, wmOperator *op) int flag = RNA_enum_get(op->ptr, "type"); /* 0==ALL, SELECTED==selected objecs */ bool copy_groups = false; - clear_id_newpoins(); + BKE_main_id_clear_newpoins(bmain); if (RNA_boolean_get(op->ptr, "object")) single_object_users(bmain, scene, v3d, flag, copy_groups); @@ -2235,7 +2235,7 @@ static int make_single_user_exec(bContext *C, wmOperator *op) * Need to make sure all the guys are learing newid before they're * using it, not after. */ - clear_id_newpoins(); + BKE_main_id_clear_newpoins(bmain); WM_event_add_notifier(C, NC_WINDOW, NULL); return OPERATOR_FINISHED; diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 091dc11f500..b4414cf3f54 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -578,7 +578,7 @@ static void render_endjob(void *rjv) RE_InitRenderCB(rj->re); if (rj->main != G.main) - free_main(rj->main); + BKE_main_free(rj->main); /* else the frame will not update for the original value */ if (rj->anim && !(rj->scene->r.scemode & R_NO_FRAME_UPDATE)) { diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 99f86371eb3..3f507cd5020 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -221,10 +221,10 @@ void ED_preview_init_dbase(void) void ED_preview_free_dbase(void) { if (G_pr_main) - free_main(G_pr_main); + BKE_main_free(G_pr_main); if (G_pr_main_cycles) - free_main(G_pr_main_cycles); + BKE_main_free(G_pr_main_cycles); } static int preview_mat_has_sss(Material *mat, bNodeTree *ntree) diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 12405150267..1c471aee8ca 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -62,9 +62,10 @@ static int view3d_copybuffer_exec(bContext *C, wmOperator *op) { + Main *bmain = CTX_data_main(C); char str[FILE_MAX]; - BKE_copybuffer_begin(); + BKE_copybuffer_begin(bmain); /* context, selection, could be generalized */ CTX_DATA_BEGIN (C, Object *, ob, selected_objects) diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 65453556523..6a0f12ff937 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -884,37 +884,37 @@ void rna_Main_linestyles_remove(Main *bmain, ReportList *reports, FreestyleLineS } /* tag functions, all the same */ -static void rna_Main_cameras_tag(Main *bmain, int value) { tag_main_lb(&bmain->camera, value); } -static void rna_Main_scenes_tag(Main *bmain, int value) { tag_main_lb(&bmain->scene, value); } -static void rna_Main_objects_tag(Main *bmain, int value) { tag_main_lb(&bmain->object, value); } -static void rna_Main_materials_tag(Main *bmain, int value) { tag_main_lb(&bmain->mat, value); } -static void rna_Main_node_groups_tag(Main *bmain, int value) { tag_main_lb(&bmain->nodetree, value); } -static void rna_Main_meshes_tag(Main *bmain, int value) { tag_main_lb(&bmain->mesh, value); } -static void rna_Main_lamps_tag(Main *bmain, int value) { tag_main_lb(&bmain->lamp, value); } -static void rna_Main_libraries_tag(Main *bmain, int value) { tag_main_lb(&bmain->library, value); } -static void rna_Main_screens_tag(Main *bmain, int value) { tag_main_lb(&bmain->screen, value); } -static void rna_Main_window_managers_tag(Main *bmain, int value) { tag_main_lb(&bmain->wm, value); } -static void rna_Main_images_tag(Main *bmain, int value) { tag_main_lb(&bmain->image, value); } -static void rna_Main_lattices_tag(Main *bmain, int value) { tag_main_lb(&bmain->latt, value); } -static void rna_Main_curves_tag(Main *bmain, int value) { tag_main_lb(&bmain->curve, value); } -static void rna_Main_metaballs_tag(Main *bmain, int value) { tag_main_lb(&bmain->mball, value); } -static void rna_Main_fonts_tag(Main *bmain, int value) { tag_main_lb(&bmain->vfont, value); } -static void rna_Main_textures_tag(Main *bmain, int value) { tag_main_lb(&bmain->tex, value); } -static void rna_Main_brushes_tag(Main *bmain, int value) { tag_main_lb(&bmain->brush, value); } -static void rna_Main_worlds_tag(Main *bmain, int value) { tag_main_lb(&bmain->world, value); } -static void rna_Main_groups_tag(Main *bmain, int value) { tag_main_lb(&bmain->group, value); } -// static void rna_Main_shape_keys_tag(Main *bmain, int value) { tag_main_lb(&bmain->key, value); } -// static void rna_Main_scripts_tag(Main *bmain, int value) { tag_main_lb(&bmain->script, value); } -static void rna_Main_texts_tag(Main *bmain, int value) { tag_main_lb(&bmain->text, value); } -static void rna_Main_speakers_tag(Main *bmain, int value) { tag_main_lb(&bmain->speaker, value); } -static void rna_Main_sounds_tag(Main *bmain, int value) { tag_main_lb(&bmain->sound, value); } -static void rna_Main_armatures_tag(Main *bmain, int value) { tag_main_lb(&bmain->armature, value); } -static void rna_Main_actions_tag(Main *bmain, int value) { tag_main_lb(&bmain->action, value); } -static void rna_Main_particles_tag(Main *bmain, int value) { tag_main_lb(&bmain->particle, value); } -static void rna_Main_gpencil_tag(Main *bmain, int value) { tag_main_lb(&bmain->gpencil, value); } -static void rna_Main_movieclips_tag(Main *bmain, int value) { tag_main_lb(&bmain->movieclip, value); } -static void rna_Main_masks_tag(Main *bmain, int value) { tag_main_lb(&bmain->mask, value); } -static void rna_Main_linestyle_tag(Main *bmain, int value) { tag_main_lb(&bmain->linestyle, value); } +static void rna_Main_cameras_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->camera, value); } +static void rna_Main_scenes_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->scene, value); } +static void rna_Main_objects_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->object, value); } +static void rna_Main_materials_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->mat, value); } +static void rna_Main_node_groups_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->nodetree, value); } +static void rna_Main_meshes_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->mesh, value); } +static void rna_Main_lamps_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->lamp, value); } +static void rna_Main_libraries_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->library, value); } +static void rna_Main_screens_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->screen, value); } +static void rna_Main_window_managers_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->wm, value); } +static void rna_Main_images_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->image, value); } +static void rna_Main_lattices_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->latt, value); } +static void rna_Main_curves_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->curve, value); } +static void rna_Main_metaballs_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->mball, value); } +static void rna_Main_fonts_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->vfont, value); } +static void rna_Main_textures_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->tex, value); } +static void rna_Main_brushes_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->brush, value); } +static void rna_Main_worlds_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->world, value); } +static void rna_Main_groups_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->group, value); } +// static void rna_Main_shape_keys_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->key, value); } +// static void rna_Main_scripts_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->script, value); } +static void rna_Main_texts_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->text, value); } +static void rna_Main_speakers_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->speaker, value); } +static void rna_Main_sounds_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->sound, value); } +static void rna_Main_armatures_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->armature, value); } +static void rna_Main_actions_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->action, value); } +static void rna_Main_particles_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->particle, value); } +static void rna_Main_gpencil_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->gpencil, value); } +static void rna_Main_movieclips_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->movieclip, value); } +static void rna_Main_masks_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->mask, value); } +static void rna_Main_linestyle_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->linestyle, value); } static int rna_Main_cameras_is_updated_get(PointerRNA *ptr) { return DAG_id_type_tagged(ptr->data, ID_CA); } static int rna_Main_scenes_is_updated_get(PointerRNA *ptr) { return DAG_id_type_tagged(ptr->data, ID_SCE); } diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 82447c2e5b4..bf0221a5e18 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1292,7 +1292,7 @@ static void rna_Scene_use_simplify_update(Main *bmain, Scene *UNUSED(scene), Poi Scene *sce_iter; Base *base; - tag_main_lb(&bmain->object, TRUE); + BKE_main_id_tag_listbase(&bmain->object, true); for (SETLOOPER(sce, sce_iter, base)) object_simplify_update(base->object); diff --git a/source/blender/python/intern/bpy_library.c b/source/blender/python/intern/bpy_library.c index 0ab8543c4ac..f4c21b1ca75 100644 --- a/source/blender/python/intern/bpy_library.c +++ b/source/blender/python/intern/bpy_library.c @@ -324,7 +324,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args)) Main *mainl = NULL; int err = 0; - flag_all_listbases_ids(LIB_PRE_EXISTING, 1); + BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, true); /* here appending/linking starts */ mainl = BLO_library_append_begin(bmain, &(self->blo_handle), self->relpath); @@ -395,7 +395,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args)) /* exception raised above, XXX, this leaks some memory */ BLO_blendhandle_close(self->blo_handle); self->blo_handle = NULL; - flag_all_listbases_ids(LIB_PRE_EXISTING, 0); + BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false); return NULL; } else { @@ -407,7 +407,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args)) /* copied from wm_operator.c */ { /* mark all library linked objects to be updated */ - recalc_all_library_objects(G.main); + BKE_main_lib_objects_recalc_all(G.main); /* append, rather than linking */ if ((self->flag & FILE_LINK) == 0) { @@ -415,7 +415,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args)) } } - flag_all_listbases_ids(LIB_PRE_EXISTING, 0); + BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false); Py_RETURN_NONE; } diff --git a/source/blender/render/intern/source/bake.c b/source/blender/render/intern/source/bake.c index c150133b276..cf724dbcfea 100644 --- a/source/blender/render/intern/source/bake.c +++ b/source/blender/render/intern/source/bake.c @@ -1016,7 +1016,7 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_up if (R.r.bake_flag & R_BAKE_VCOL) { /* untag all meshes */ - tag_main_lb(&G.main->mesh, false); + BKE_main_id_tag_listbase(&G.main->mesh, false); } BLI_init_threads(&threads, do_bake_thread, re->r.threads); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index c8c45b3f88a..6b89d1d2335 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2385,8 +2385,8 @@ static int wm_link_append_exec(bContext *C, wmOperator *op) /* tag everything, all untagged data can be made local * its also generally useful to know what is new * - * take extra care flag_all_listbases_ids(LIB_LINK_TAG, 0) is called after! */ - flag_all_listbases_ids(LIB_PRE_EXISTING, 1); + * take extra care BKE_main_id_flag_all(LIB_LINK_TAG, false) is called after! */ + BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, 1); /* here appending/linking starts */ mainl = BLO_library_append_begin(bmain, &bh, libname); @@ -2404,7 +2404,7 @@ static int wm_link_append_exec(bContext *C, wmOperator *op) BLO_library_append_end(C, mainl, &bh, idcode, flag); /* mark all library linked objects to be updated */ - recalc_all_library_objects(bmain); + BKE_main_lib_objects_recalc_all(bmain); IMB_colormanagement_check_file_config(bmain); /* append, rather than linking */ @@ -2416,7 +2416,7 @@ static int wm_link_append_exec(bContext *C, wmOperator *op) /* important we unset, otherwise these object wont * link into other scenes from this blend file */ - flag_all_listbases_ids(LIB_PRE_EXISTING, 0); + BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false); /* recreate dependency graph to include new objects */ DAG_scene_relations_rebuild(bmain, scene); diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp index b1a76a61afe..c58746a22c1 100644 --- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp +++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp @@ -132,7 +132,7 @@ KX_BlenderSceneConverter::KX_BlenderSceneConverter( m_useglslmat(false), m_use_mat_cache(true) { - tag_main(maggie, 0); /* avoid re-tagging later on */ + BKE_main_id_tag_all(maggie, false); /* avoid re-tagging later on */ m_newfilename = ""; m_threadinfo = new ThreadInfo(); pthread_mutex_init(&m_threadinfo->merge_lock, NULL); @@ -1231,7 +1231,7 @@ bool KX_BlenderSceneConverter::FreeBlendFile(struct Main *maggie) for (vector<Main*>::iterator it=m_DynamicMaggie.begin(); !(it==m_DynamicMaggie.end()); it++) { Main *main= *it; if (main != maggie) { - tag_main(main, 0); + BKE_main_id_tag_all(main, false); } else { maggie_index= i; @@ -1244,7 +1244,7 @@ bool KX_BlenderSceneConverter::FreeBlendFile(struct Main *maggie) return false; m_DynamicMaggie.erase(m_DynamicMaggie.begin() + maggie_index); - tag_main(maggie, 1); + BKE_main_id_tag_all(maggie, true); /* free all tagged objects */ @@ -1490,7 +1490,7 @@ bool KX_BlenderSceneConverter::FreeBlendFile(struct Main *maggie) delete m_status_map[maggie->name]; m_status_map.erase(maggie->name); - free_main(maggie); + BKE_main_free(maggie); return true; } diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp index 57aafede143..ba580bc038c 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp @@ -436,7 +436,7 @@ int main(int argc, char** argv) U.gameflags |= USER_DISABLE_VBO; // We load our own G.main, so free the one that initglobals() gives us - free_main(G.main); + BKE_main_free(G.main); G.main = NULL; MEM_CacheLimiter_set_disabled(true); |