Main API: refactor naming, use BKE_main_ prefix and add main arg.
This commit is contained in:
@@ -103,7 +103,7 @@ extern int BKE_undo_save_file(const char *filename);
|
|||||||
extern struct Main *BKE_undo_get_main(struct Scene **scene);
|
extern struct Main *BKE_undo_get_main(struct Scene **scene);
|
||||||
|
|
||||||
/* copybuffer */
|
/* copybuffer */
|
||||||
void BKE_copybuffer_begin(void);
|
void BKE_copybuffer_begin(struct Main *bmain);
|
||||||
void BKE_copybuffer_tag_ID(struct ID *id);
|
void BKE_copybuffer_tag_ID(struct ID *id);
|
||||||
int BKE_copybuffer_save(const char *filename, struct ReportList *reports);
|
int BKE_copybuffer_save(const char *filename, struct ReportList *reports);
|
||||||
int BKE_copybuffer_paste(struct bContext *C, const char *libname, struct ReportList *reports);
|
int BKE_copybuffer_paste(struct bContext *C, const char *libname, struct ReportList *reports);
|
||||||
|
@@ -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_us(struct ListBase *lb, void *idv);
|
||||||
void BKE_libblock_free_data(struct ID *id);
|
void BKE_libblock_free_data(struct ID *id);
|
||||||
|
|
||||||
struct Main *BKE_main_new(void);
|
|
||||||
void free_main(struct Main *mainvar);
|
|
||||||
|
|
||||||
void tag_main_idcode(struct Main *mainvar, const short type, const short tag);
|
/* Main API */
|
||||||
void tag_main_lb(struct ListBase *lb, const short tag);
|
struct Main *BKE_main_new(void);
|
||||||
void tag_main(struct Main *mainvar, const short tag);
|
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 BKE_main_lib_objects_recalc_all(struct Main *bmain);
|
||||||
|
|
||||||
void rename_id(struct ID *id, const char *name);
|
void rename_id(struct ID *id, const char *name);
|
||||||
void name_uiprefix_id(char *name, const struct ID *id);
|
void name_uiprefix_id(char *name, const struct ID *id);
|
||||||
void test_idbutton(char *name);
|
void test_idbutton(char *name);
|
||||||
|
|
||||||
void BKE_library_make_local(struct Main *bmain, struct Library *lib, bool untagged_only);
|
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();
|
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
|
#if 0
|
||||||
void IDnames_to_pupstring(const char **str, const char *title, const char *extraops,
|
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);
|
struct ListBase *lb, struct ID *link, short *nr);
|
||||||
#endif
|
#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_windowmanager_cb(void (*func)(struct bContext *, struct wmWindowManager *) );
|
||||||
void set_free_notifier_reference_cb(void (*func)(const void *) );
|
void set_free_notifier_reference_cb(void (*func)(const void *) );
|
||||||
|
|
||||||
|
@@ -113,7 +113,7 @@ char versionstr[48] = "";
|
|||||||
void free_blender(void)
|
void free_blender(void)
|
||||||
{
|
{
|
||||||
/* samples are in a global list..., also sets G.main->sound->sample NULL */
|
/* 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;
|
G.main = NULL;
|
||||||
|
|
||||||
BKE_spacetypes_free(); /* after free main, it uses space callbacks */
|
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 */
|
// 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();
|
// 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 (bfd->user) retval = BKE_READ_FILE_OK_USERPREFS;
|
||||||
|
|
||||||
if (0 == handle_subversion_warning(bfd->main, reports)) {
|
if (0 == handle_subversion_warning(bfd->main, reports)) {
|
||||||
free_main(bfd->main);
|
BKE_main_free(bfd->main);
|
||||||
MEM_freeN(bfd);
|
MEM_freeN(bfd);
|
||||||
bfd = NULL;
|
bfd = NULL;
|
||||||
retval = BKE_READ_FILE_FAIL;
|
retval = BKE_READ_FILE_FAIL;
|
||||||
@@ -516,7 +516,7 @@ int BKE_read_file_userdef(const char *filepath, ReportList *reports)
|
|||||||
U = *bfd->user;
|
U = *bfd->user;
|
||||||
MEM_freeN(bfd->user);
|
MEM_freeN(bfd->user);
|
||||||
}
|
}
|
||||||
free_main(bfd->main);
|
BKE_main_free(bfd->main);
|
||||||
MEM_freeN(bfd);
|
MEM_freeN(bfd);
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
@@ -870,10 +870,10 @@ Main *BKE_undo_get_main(Scene **scene)
|
|||||||
|
|
||||||
/* assumes data is in G.main */
|
/* assumes data is in G.main */
|
||||||
|
|
||||||
void BKE_copybuffer_begin(void)
|
void BKE_copybuffer_begin(Main *bmain)
|
||||||
{
|
{
|
||||||
/* set all id flags to zero; */
|
/* 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)
|
void BKE_copybuffer_tag_ID(ID *id)
|
||||||
@@ -943,7 +943,7 @@ int BKE_copybuffer_save(const char *filename, ReportList *reports)
|
|||||||
MEM_freeN(mainb);
|
MEM_freeN(mainb);
|
||||||
|
|
||||||
/* set id flag to zero; */
|
/* 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) {
|
if (path_list_backup) {
|
||||||
BKE_bpath_list_restore(G.main, path_list_flag, 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
|
/* tag everything, all untagged data can be made local
|
||||||
* its also generally useful to know what is new
|
* its also generally useful to know what is new
|
||||||
*
|
*
|
||||||
* take extra care flag_all_listbases_ids(LIB_LINK_TAG, 0) is called after! */
|
* take extra care BKE_main_id_flag_all(bmain, LIB_LINK_TAG, false) is called after! */
|
||||||
flag_all_listbases_ids(LIB_PRE_EXISTING, 1);
|
BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, true);
|
||||||
|
|
||||||
/* here appending/linking starts */
|
/* here appending/linking starts */
|
||||||
mainl = BLO_library_append_begin(bmain, &bh, libname);
|
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);
|
BLO_library_append_end(C, mainl, &bh, 0, 0);
|
||||||
|
|
||||||
/* mark all library linked objects to be updated */
|
/* 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);
|
IMB_colormanagement_check_file_config(bmain);
|
||||||
|
|
||||||
/* append, rather than linking */
|
/* 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
|
/* important we unset, otherwise these object wont
|
||||||
* link into other scenes from this blend file */
|
* 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 */
|
/* recreate dependency graph to include new objects */
|
||||||
DAG_relations_tag_update(bmain);
|
DAG_relations_tag_update(bmain);
|
||||||
|
@@ -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] */
|
/* clear "LIB_DOIT" flag from all materials, to prevent infinite recursion problems later [#32017] */
|
||||||
tag_main_idcode(bmain, ID_MA, FALSE);
|
BKE_main_id_tag_idcode(bmain, ID_MA, false);
|
||||||
tag_main_idcode(bmain, ID_LA, FALSE);
|
BKE_main_id_tag_idcode(bmain, ID_LA, false);
|
||||||
tag_main_idcode(bmain, ID_GR, FALSE);
|
BKE_main_id_tag_idcode(bmain, ID_GR, false);
|
||||||
|
|
||||||
/* add base node for scene. scene is always the first node in DAG */
|
/* add base node for scene. scene is always the first node in DAG */
|
||||||
scenenode = dag_add_node(dag, sce);
|
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);
|
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;
|
/* 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)
|
* 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;
|
GroupObject *go;
|
||||||
Scene *sce_iter;
|
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 */
|
/* set ob flags where animated systems are */
|
||||||
for (SETLOOPER(scene, sce_iter, base)) {
|
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 we have a windowmanager, look into windows */
|
||||||
if ((wm = bmain->wm.first)) {
|
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) {
|
for (win = wm->windows.first; win; win = win->next) {
|
||||||
if (win->screen && win->screen->scene->theDag) {
|
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
|
* note armature poses or object matrices are preserved and do not
|
||||||
* require updates, so we skip those */
|
* require updates, so we skip those */
|
||||||
dag_scene_flush_layers(scene, lay);
|
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)) {
|
for (SETLOOPER(scene, sce_iter, base)) {
|
||||||
ob = base->object;
|
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 */
|
/* now tag update flags, to ensure deformers get calculated on redraw */
|
||||||
DAG_scene_update_flags(bmain, scene, lay, do_time);
|
DAG_scene_update_flags(bmain, scene, lay, do_time);
|
||||||
|
@@ -522,33 +522,35 @@ ListBase *which_libbase(Main *mainlib, short type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Flag all ids in listbase */
|
/* 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;
|
ID *id;
|
||||||
if (value) {
|
if (value) {
|
||||||
for (id = lb->first; id; id = id->next) id->flag |= flag;
|
for (id = lb->first; id; id = id->next) id->flag |= flag;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
flag = ~flag;
|
const short nflag = ~flag;
|
||||||
for (id = lb->first; id; id = id->next) id->flag &= flag;
|
for (id = lb->first; id; id = id->next) id->flag &= nflag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Flag all ids in listbase */
|
/* 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];
|
ListBase *lbarray[MAX_LIBARRAY];
|
||||||
int a;
|
int a;
|
||||||
a = set_listbasepointers(G.main, lbarray);
|
a = set_listbasepointers(bmain, lbarray);
|
||||||
while (a--) flag_listbase_ids(lbarray[a], flag, value);
|
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;
|
Object *ob;
|
||||||
|
|
||||||
/* flag for full recalc */
|
/* 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)
|
if (ob->id.lib)
|
||||||
ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME;
|
ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME;
|
||||||
}
|
}
|
||||||
@@ -1017,7 +1019,7 @@ Main *BKE_main_new(void)
|
|||||||
return bmain;
|
return bmain;
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_main(Main *mainvar)
|
void BKE_main_free(Main *mainvar)
|
||||||
{
|
{
|
||||||
/* also call when reading a file, erase all, etc */
|
/* also call when reading a file, erase all, etc */
|
||||||
ListBase *lbarray[MAX_LIBARRAY];
|
ListBase *lbarray[MAX_LIBARRAY];
|
||||||
@@ -1436,8 +1438,10 @@ bool new_id(ListBase *lb, ID *id, const char *tname)
|
|||||||
return result;
|
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)
|
void id_clear_lib_data(Main *bmain, ID *id)
|
||||||
{
|
{
|
||||||
bNodeTree *ntree = NULL;
|
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 */
|
/* 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];
|
ListBase *lbarray[MAX_LIBARRAY];
|
||||||
ID *id;
|
ID *id;
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
a = set_listbasepointers(G.main, lbarray);
|
a = set_listbasepointers(bmain, lbarray);
|
||||||
while (a--) {
|
while (a--) {
|
||||||
id = lbarray[a]->first;
|
id = lbarray[a]->first;
|
||||||
while (id) {
|
while (id) {
|
||||||
@@ -1526,7 +1530,7 @@ static void lib_indirect_test_id(ID *id, Library *lib)
|
|||||||
#undef LIBTAG
|
#undef LIBTAG
|
||||||
}
|
}
|
||||||
|
|
||||||
void tag_main_lb(ListBase *lb, const short tag)
|
void BKE_main_id_tag_listbase(ListBase *lb, const bool tag)
|
||||||
{
|
{
|
||||||
ID *id;
|
ID *id;
|
||||||
if (tag) {
|
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);
|
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];
|
ListBase *lbarray[MAX_LIBARRAY];
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
a = set_listbasepointers(mainvar, lbarray);
|
a = set_listbasepointers(mainvar, lbarray);
|
||||||
while (a--) {
|
while (a--) {
|
||||||
tag_main_lb(lbarray[a], tag);
|
BKE_main_id_tag_listbase(lbarray[a], tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -175,7 +175,7 @@ Scene *BKE_scene_copy(Scene *sce, int type)
|
|||||||
scen = BKE_libblock_copy(&sce->id);
|
scen = BKE_libblock_copy(&sce->id);
|
||||||
BLI_duplicatelist(&(scen->base), &(sce->base));
|
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->world);
|
||||||
id_us_plus((ID *)scen->set);
|
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
|
/* clear "LIB_DOIT" flag from all materials, to prevent infinite recursion problems later
|
||||||
* when trying to find materials with drivers that need evaluating [#32017]
|
* when trying to find materials with drivers that need evaluating [#32017]
|
||||||
*/
|
*/
|
||||||
tag_main_idcode(bmain, ID_MA, FALSE);
|
BKE_main_id_tag_idcode(bmain, ID_MA, false);
|
||||||
tag_main_idcode(bmain, ID_LA, FALSE);
|
BKE_main_id_tag_idcode(bmain, ID_LA, false);
|
||||||
|
|
||||||
/* update all objects: drivers, matrices, displists, etc. flags set
|
/* update all objects: drivers, matrices, displists, etc. flags set
|
||||||
* by depgraph or manual, no layer check here, gets correct flushed
|
* 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
|
/* clear "LIB_DOIT" flag from all materials, to prevent infinite recursion problems later
|
||||||
* when trying to find materials with drivers that need evaluating [#32017]
|
* when trying to find materials with drivers that need evaluating [#32017]
|
||||||
*/
|
*/
|
||||||
tag_main_idcode(bmain, ID_MA, FALSE);
|
BKE_main_id_tag_idcode(bmain, ID_MA, false);
|
||||||
tag_main_idcode(bmain, ID_LA, FALSE);
|
BKE_main_id_tag_idcode(bmain, ID_LA, false);
|
||||||
|
|
||||||
/* run rigidbody sim */
|
/* run rigidbody sim */
|
||||||
/* NOTE: current position is so that rigidbody sim affects other objects, might change in the future */
|
/* NOTE: current position is so that rigidbody sim affects other objects, might change in the future */
|
||||||
|
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "BKE_main.h"
|
#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_idcode.h"
|
||||||
#include "BKE_report.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)
|
void BLO_blendfiledata_free(BlendFileData *bfd)
|
||||||
{
|
{
|
||||||
if (bfd->main) {
|
if (bfd->main) {
|
||||||
free_main(bfd->main);
|
BKE_main_free(bfd->main);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bfd->user) {
|
if (bfd->user) {
|
||||||
|
@@ -8946,7 +8946,7 @@ static Main *library_append_begin(Main *mainvar, FileData **fd, const char *file
|
|||||||
(*fd)->mainlist = MEM_callocN(sizeof(ListBase), "FileData.mainlist");
|
(*fd)->mainlist = MEM_callocN(sizeof(ListBase), "FileData.mainlist");
|
||||||
|
|
||||||
/* clear for group instancing tag */
|
/* clear for group instancing tag */
|
||||||
tag_main_lb(&(mainvar->group), 0);
|
BKE_main_id_tag_listbase(&(mainvar->group), false);
|
||||||
|
|
||||||
/* make mains */
|
/* make mains */
|
||||||
blo_split_main((*fd)->mainlist, mainvar);
|
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 */
|
/* 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) */
|
/* has been removed... erm, why? s..ton) */
|
||||||
/* 20040907: looks like they are give base already in append_named_part(); -Nathan L */
|
/* 20040907: looks like they are give base already in append_named_part(); -Nathan L */
|
||||||
|
@@ -1093,7 +1093,7 @@ static int object_delete_exec(bContext *C, wmOperator *op)
|
|||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
|
|
||||||
/* delete has to handle all open scenes */
|
/* 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) {
|
for (win = wm->windows.first; win; win = win->next) {
|
||||||
scene = win->screen->scene;
|
scene = win->screen->scene;
|
||||||
|
|
||||||
@@ -1216,7 +1216,7 @@ static void copy_object_set_idnew(bContext *C, int dupflag)
|
|||||||
|
|
||||||
set_sca_new_poins();
|
set_sca_new_poins();
|
||||||
|
|
||||||
clear_id_newpoins();
|
BKE_main_id_clear_newpoins(bmain);
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************* Make Duplicates Real ************************/
|
/********************* 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_base_parent = RNA_boolean_get(op->ptr, "use_base_parent");
|
||||||
const short use_hierarchy = RNA_boolean_get(op->ptr, "use_hierarchy");
|
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)
|
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;
|
Base *basen;
|
||||||
Object *ob;
|
Object *ob;
|
||||||
|
|
||||||
clear_id_newpoins();
|
BKE_main_id_clear_newpoins(bmain);
|
||||||
clear_sca_new_poins(); /* sensor/contr/act */
|
clear_sca_new_poins(); /* sensor/contr/act */
|
||||||
|
|
||||||
basen = object_add_duplicate_internal(bmain, scene, base, dupflag);
|
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 linked = RNA_boolean_get(op->ptr, "linked");
|
||||||
int dupflag = (linked) ? 0 : U.dupflag;
|
int dupflag = (linked) ? 0 : U.dupflag;
|
||||||
|
|
||||||
clear_id_newpoins();
|
BKE_main_id_clear_newpoins(bmain);
|
||||||
clear_sca_new_poins(); /* sensor/contr/act */
|
clear_sca_new_poins(); /* sensor/contr/act */
|
||||||
|
|
||||||
CTX_DATA_BEGIN (C, Base *, base, selected_bases)
|
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;
|
base->flag = ob->flag;
|
||||||
|
|
||||||
/* prepare dupli */
|
/* prepare dupli */
|
||||||
clear_id_newpoins();
|
BKE_main_id_clear_newpoins(bmain);
|
||||||
clear_sca_new_poins(); /* sensor/contr/act */
|
clear_sca_new_poins(); /* sensor/contr/act */
|
||||||
|
|
||||||
basen = object_add_duplicate_internal(bmain, scene, base, dupflag);
|
basen = object_add_duplicate_internal(bmain, scene, base, dupflag);
|
||||||
|
@@ -188,7 +188,7 @@ static int objects_add_active_exec(bContext *C, wmOperator *op)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* for recursive check */
|
/* 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)
|
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
|
* It is also bad idea to add object to group which is in group which
|
||||||
* contains our current object.
|
* 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)) {
|
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");
|
BKE_report(op->reports, RPT_ERROR, "Could not add the group because of dependency cycle detected");
|
||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
|
@@ -2050,7 +2050,7 @@ void ED_object_single_users(Main *bmain, Scene *scene, bool full, bool copy_grou
|
|||||||
single_tex_users_expand(bmain);
|
single_tex_users_expand(bmain);
|
||||||
}
|
}
|
||||||
|
|
||||||
clear_id_newpoins();
|
BKE_main_id_clear_newpoins(bmain);
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************* Make Local ***********************************/
|
/******************************* Make Local ***********************************/
|
||||||
@@ -2096,7 +2096,7 @@ static int make_local_exec(bContext *C, wmOperator *op)
|
|||||||
return OPERATOR_FINISHED;
|
return OPERATOR_FINISHED;
|
||||||
}
|
}
|
||||||
|
|
||||||
clear_id_newpoins();
|
BKE_main_id_clear_newpoins(bmain);
|
||||||
|
|
||||||
CTX_DATA_BEGIN (C, Object *, ob, selected_objects)
|
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 */
|
int flag = RNA_enum_get(op->ptr, "type"); /* 0==ALL, SELECTED==selected objecs */
|
||||||
bool copy_groups = false;
|
bool copy_groups = false;
|
||||||
|
|
||||||
clear_id_newpoins();
|
BKE_main_id_clear_newpoins(bmain);
|
||||||
|
|
||||||
if (RNA_boolean_get(op->ptr, "object"))
|
if (RNA_boolean_get(op->ptr, "object"))
|
||||||
single_object_users(bmain, scene, v3d, flag, copy_groups);
|
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
|
* Need to make sure all the guys are learing newid before they're
|
||||||
* using it, not after.
|
* using it, not after.
|
||||||
*/
|
*/
|
||||||
clear_id_newpoins();
|
BKE_main_id_clear_newpoins(bmain);
|
||||||
|
|
||||||
WM_event_add_notifier(C, NC_WINDOW, NULL);
|
WM_event_add_notifier(C, NC_WINDOW, NULL);
|
||||||
return OPERATOR_FINISHED;
|
return OPERATOR_FINISHED;
|
||||||
|
@@ -578,7 +578,7 @@ static void render_endjob(void *rjv)
|
|||||||
RE_InitRenderCB(rj->re);
|
RE_InitRenderCB(rj->re);
|
||||||
|
|
||||||
if (rj->main != G.main)
|
if (rj->main != G.main)
|
||||||
free_main(rj->main);
|
BKE_main_free(rj->main);
|
||||||
|
|
||||||
/* else the frame will not update for the original value */
|
/* else the frame will not update for the original value */
|
||||||
if (rj->anim && !(rj->scene->r.scemode & R_NO_FRAME_UPDATE)) {
|
if (rj->anim && !(rj->scene->r.scemode & R_NO_FRAME_UPDATE)) {
|
||||||
|
@@ -221,10 +221,10 @@ void ED_preview_init_dbase(void)
|
|||||||
void ED_preview_free_dbase(void)
|
void ED_preview_free_dbase(void)
|
||||||
{
|
{
|
||||||
if (G_pr_main)
|
if (G_pr_main)
|
||||||
free_main(G_pr_main);
|
BKE_main_free(G_pr_main);
|
||||||
|
|
||||||
if (G_pr_main_cycles)
|
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)
|
static int preview_mat_has_sss(Material *mat, bNodeTree *ntree)
|
||||||
|
@@ -62,9 +62,10 @@
|
|||||||
|
|
||||||
static int view3d_copybuffer_exec(bContext *C, wmOperator *op)
|
static int view3d_copybuffer_exec(bContext *C, wmOperator *op)
|
||||||
{
|
{
|
||||||
|
Main *bmain = CTX_data_main(C);
|
||||||
char str[FILE_MAX];
|
char str[FILE_MAX];
|
||||||
|
|
||||||
BKE_copybuffer_begin();
|
BKE_copybuffer_begin(bmain);
|
||||||
|
|
||||||
/* context, selection, could be generalized */
|
/* context, selection, could be generalized */
|
||||||
CTX_DATA_BEGIN (C, Object *, ob, selected_objects)
|
CTX_DATA_BEGIN (C, Object *, ob, selected_objects)
|
||||||
|
@@ -884,37 +884,37 @@ void rna_Main_linestyles_remove(Main *bmain, ReportList *reports, FreestyleLineS
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* tag functions, all the same */
|
/* 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_cameras_tag(Main *bmain, int value) { BKE_main_id_tag_listbase(&bmain->camera, value); }
|
||||||
static void rna_Main_scenes_tag(Main *bmain, int value) { tag_main_lb(&bmain->scene, 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) { tag_main_lb(&bmain->object, 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) { tag_main_lb(&bmain->mat, 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) { tag_main_lb(&bmain->nodetree, 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) { tag_main_lb(&bmain->mesh, 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) { tag_main_lb(&bmain->lamp, 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) { tag_main_lb(&bmain->library, 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) { tag_main_lb(&bmain->screen, 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) { tag_main_lb(&bmain->wm, 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) { tag_main_lb(&bmain->image, 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) { tag_main_lb(&bmain->latt, 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) { tag_main_lb(&bmain->curve, 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) { tag_main_lb(&bmain->mball, 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) { tag_main_lb(&bmain->vfont, 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) { tag_main_lb(&bmain->tex, 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) { tag_main_lb(&bmain->brush, 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) { tag_main_lb(&bmain->world, 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) { tag_main_lb(&bmain->group, 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) { tag_main_lb(&bmain->key, 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) { tag_main_lb(&bmain->script, 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) { tag_main_lb(&bmain->text, 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) { tag_main_lb(&bmain->speaker, 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) { tag_main_lb(&bmain->sound, 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) { tag_main_lb(&bmain->armature, 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) { tag_main_lb(&bmain->action, 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) { tag_main_lb(&bmain->particle, 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) { tag_main_lb(&bmain->gpencil, 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) { tag_main_lb(&bmain->movieclip, 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) { tag_main_lb(&bmain->mask, 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) { tag_main_lb(&bmain->linestyle, 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_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); }
|
static int rna_Main_scenes_is_updated_get(PointerRNA *ptr) { return DAG_id_type_tagged(ptr->data, ID_SCE); }
|
||||||
|
@@ -1292,7 +1292,7 @@ static void rna_Scene_use_simplify_update(Main *bmain, Scene *UNUSED(scene), Poi
|
|||||||
Scene *sce_iter;
|
Scene *sce_iter;
|
||||||
Base *base;
|
Base *base;
|
||||||
|
|
||||||
tag_main_lb(&bmain->object, TRUE);
|
BKE_main_id_tag_listbase(&bmain->object, true);
|
||||||
for (SETLOOPER(sce, sce_iter, base))
|
for (SETLOOPER(sce, sce_iter, base))
|
||||||
object_simplify_update(base->object);
|
object_simplify_update(base->object);
|
||||||
|
|
||||||
|
@@ -324,7 +324,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
|
|||||||
Main *mainl = NULL;
|
Main *mainl = NULL;
|
||||||
int err = 0;
|
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 */
|
/* here appending/linking starts */
|
||||||
mainl = BLO_library_append_begin(bmain, &(self->blo_handle), self->relpath);
|
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 */
|
/* exception raised above, XXX, this leaks some memory */
|
||||||
BLO_blendhandle_close(self->blo_handle);
|
BLO_blendhandle_close(self->blo_handle);
|
||||||
self->blo_handle = NULL;
|
self->blo_handle = NULL;
|
||||||
flag_all_listbases_ids(LIB_PRE_EXISTING, 0);
|
BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -407,7 +407,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
|
|||||||
/* copied from wm_operator.c */
|
/* copied from wm_operator.c */
|
||||||
{
|
{
|
||||||
/* mark all library linked objects to be updated */
|
/* 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 */
|
/* append, rather than linking */
|
||||||
if ((self->flag & FILE_LINK) == 0) {
|
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;
|
Py_RETURN_NONE;
|
||||||
}
|
}
|
||||||
|
@@ -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) {
|
if (R.r.bake_flag & R_BAKE_VCOL) {
|
||||||
/* untag all meshes */
|
/* 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);
|
BLI_init_threads(&threads, do_bake_thread, re->r.threads);
|
||||||
|
@@ -2385,8 +2385,8 @@ static int wm_link_append_exec(bContext *C, wmOperator *op)
|
|||||||
/* tag everything, all untagged data can be made local
|
/* tag everything, all untagged data can be made local
|
||||||
* its also generally useful to know what is new
|
* its also generally useful to know what is new
|
||||||
*
|
*
|
||||||
* take extra care flag_all_listbases_ids(LIB_LINK_TAG, 0) is called after! */
|
* take extra care BKE_main_id_flag_all(LIB_LINK_TAG, false) is called after! */
|
||||||
flag_all_listbases_ids(LIB_PRE_EXISTING, 1);
|
BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, 1);
|
||||||
|
|
||||||
/* here appending/linking starts */
|
/* here appending/linking starts */
|
||||||
mainl = BLO_library_append_begin(bmain, &bh, libname);
|
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);
|
BLO_library_append_end(C, mainl, &bh, idcode, flag);
|
||||||
|
|
||||||
/* mark all library linked objects to be updated */
|
/* 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);
|
IMB_colormanagement_check_file_config(bmain);
|
||||||
|
|
||||||
/* append, rather than linking */
|
/* 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
|
/* important we unset, otherwise these object wont
|
||||||
* link into other scenes from this blend file */
|
* 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 */
|
/* recreate dependency graph to include new objects */
|
||||||
DAG_scene_relations_rebuild(bmain, scene);
|
DAG_scene_relations_rebuild(bmain, scene);
|
||||||
|
@@ -132,7 +132,7 @@ KX_BlenderSceneConverter::KX_BlenderSceneConverter(
|
|||||||
m_useglslmat(false),
|
m_useglslmat(false),
|
||||||
m_use_mat_cache(true)
|
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_newfilename = "";
|
||||||
m_threadinfo = new ThreadInfo();
|
m_threadinfo = new ThreadInfo();
|
||||||
pthread_mutex_init(&m_threadinfo->merge_lock, NULL);
|
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++) {
|
for (vector<Main*>::iterator it=m_DynamicMaggie.begin(); !(it==m_DynamicMaggie.end()); it++) {
|
||||||
Main *main= *it;
|
Main *main= *it;
|
||||||
if (main != maggie) {
|
if (main != maggie) {
|
||||||
tag_main(main, 0);
|
BKE_main_id_tag_all(main, false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
maggie_index= i;
|
maggie_index= i;
|
||||||
@@ -1244,7 +1244,7 @@ bool KX_BlenderSceneConverter::FreeBlendFile(struct Main *maggie)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
m_DynamicMaggie.erase(m_DynamicMaggie.begin() + maggie_index);
|
m_DynamicMaggie.erase(m_DynamicMaggie.begin() + maggie_index);
|
||||||
tag_main(maggie, 1);
|
BKE_main_id_tag_all(maggie, true);
|
||||||
|
|
||||||
|
|
||||||
/* free all tagged objects */
|
/* free all tagged objects */
|
||||||
@@ -1490,7 +1490,7 @@ bool KX_BlenderSceneConverter::FreeBlendFile(struct Main *maggie)
|
|||||||
delete m_status_map[maggie->name];
|
delete m_status_map[maggie->name];
|
||||||
m_status_map.erase(maggie->name);
|
m_status_map.erase(maggie->name);
|
||||||
|
|
||||||
free_main(maggie);
|
BKE_main_free(maggie);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -436,7 +436,7 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
U.gameflags |= USER_DISABLE_VBO;
|
U.gameflags |= USER_DISABLE_VBO;
|
||||||
// We load our own G.main, so free the one that initglobals() gives us
|
// 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;
|
G.main = NULL;
|
||||||
|
|
||||||
MEM_CacheLimiter_set_disabled(true);
|
MEM_CacheLimiter_set_disabled(true);
|
||||||
|
Reference in New Issue
Block a user