From 7a9693fa8ba2132e09a892dfa0e60736b741002a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 2 Nov 2015 21:20:03 +1100 Subject: Library API: pass Main struct to unlink functions --- source/blender/blenkernel/BKE_group.h | 2 +- source/blender/blenkernel/BKE_object.h | 2 +- source/blender/blenkernel/intern/group.c | 3 +-- source/blender/blenkernel/intern/library.c | 10 +++++++--- source/blender/blenkernel/intern/object.c | 3 +-- source/blender/editors/object/object_group.c | 3 ++- source/blender/editors/space_outliner/outliner_tools.c | 8 +++++--- source/blender/makesrna/intern/rna_main_api.c | 4 ++-- 8 files changed, 20 insertions(+), 15 deletions(-) diff --git a/source/blender/blenkernel/BKE_group.h b/source/blender/blenkernel/BKE_group.h index d856e90a340..9056e48cf50 100644 --- a/source/blender/blenkernel/BKE_group.h +++ b/source/blender/blenkernel/BKE_group.h @@ -41,7 +41,7 @@ struct Object; struct Scene; void BKE_group_free(struct Group *group); -void BKE_group_unlink(struct Group *group); +void BKE_group_unlink(struct Main *bmain, struct Group *group); struct Group *BKE_group_add(struct Main *bmain, const char *name); struct Group *BKE_group_copy(struct Group *group); bool BKE_group_object_add(struct Group *group, struct Object *ob, struct Scene *scene, struct Base *base); diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index 45d14a35539..91ea55f07f9 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -79,7 +79,7 @@ void BKE_object_free_modifiers(struct Object *ob); void BKE_object_make_proxy(struct Object *ob, struct Object *target, struct Object *gob); void BKE_object_copy_proxy_drivers(struct Object *ob, struct Object *target); -void BKE_object_unlink(struct Object *ob); +void BKE_object_unlink(struct Main *bmain, struct Object *ob); bool BKE_object_exists_check(struct Object *obtest); bool BKE_object_is_in_editmode(struct Object *ob); bool BKE_object_is_in_editmode_vgroup(struct Object *ob); diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c index 3f68339be11..150226523f2 100644 --- a/source/blender/blenkernel/intern/group.c +++ b/source/blender/blenkernel/intern/group.c @@ -73,9 +73,8 @@ void BKE_group_free(Group *group) } } -void BKE_group_unlink(Group *group) +void BKE_group_unlink(Main *bmain, Group *group) { - Main *bmain = G.main; Material *ma; Object *ob; Scene *sce; diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index d9439b53639..c618795eb52 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -406,11 +406,11 @@ bool id_unlink(ID *id, int test) break; case ID_GR: if (test) return true; - BKE_group_unlink((Group *)id); + BKE_group_unlink(mainlib, (Group *)id); break; case ID_OB: if (test) return true; - BKE_object_unlink((Object *)id); + BKE_object_unlink(mainlib, (Object *)id); break; } @@ -1205,7 +1205,11 @@ void BKE_libblock_free_us(Main *bmain, void *idv) /* test users */ else printf("ERROR block %s users %d\n", id->name, id->us); } if (id->us == 0) { - if (GS(id->name) == ID_OB) BKE_object_unlink((Object *)id); + switch (GS(id->name)) { + case ID_OB: + BKE_object_unlink(bmain, (Object *)id); + break; + } BKE_libblock_free(bmain, id); } diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index b6fcb04f616..456791e99fc 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -478,9 +478,8 @@ static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Objec } } -void BKE_object_unlink(Object *ob) +void BKE_object_unlink(Main *bmain, Object *ob) { - Main *bmain = G.main; Object *obt; Material *mat; World *wrld; diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c index 3c43f2729bd..76a8a68c42d 100644 --- a/source/blender/editors/object/object_group.c +++ b/source/blender/editors/object/object_group.c @@ -521,12 +521,13 @@ void OBJECT_OT_group_remove(wmOperatorType *ot) static int group_unlink_exec(bContext *C, wmOperator *UNUSED(op)) { + Main *bmain = CTX_data_main(C); Group *group = CTX_data_pointer_get_type(C, "group", &RNA_Group).data; if (!group) return OPERATOR_CANCELLED; - BKE_group_unlink(group); + BKE_group_unlink(bmain, group); WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, NULL); diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c index 863f09d4039..253430a4b13 100644 --- a/source/blender/editors/space_outliner/outliner_tools.c +++ b/source/blender/editors/space_outliner/outliner_tools.c @@ -215,8 +215,9 @@ static void unlink_texture_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeEle } } -static void unlink_group_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *UNUSED(te), - TreeStoreElem *tsep, TreeStoreElem *tselem) +static void unlink_group_cb( + bContext *C, Scene *UNUSED(scene), TreeElement *UNUSED(te), + TreeStoreElem *tsep, TreeStoreElem *tselem) { Group *group = (Group *)tselem->id; @@ -227,7 +228,8 @@ static void unlink_group_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeEleme } } else { - BKE_group_unlink(group); + Main *bmain = CTX_data_main(C); + BKE_group_unlink(bmain, group); } } diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 12994b02c64..8e28b35b0ed 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -226,7 +226,7 @@ static void rna_Main_objects_remove(Main *bmain, ReportList *reports, PointerRNA { Object *object = object_ptr->data; if (ID_REAL_USERS(object) <= 0) { - BKE_object_unlink(object); /* needed or ID pointers to this are not cleared */ + BKE_object_unlink(bmain, object); /* needed or ID pointers to this are not cleared */ BKE_libblock_free(bmain, object); RNA_POINTER_INVALIDATE(object_ptr); } @@ -539,7 +539,7 @@ static Group *rna_Main_groups_new(Main *bmain, const char *name) static void rna_Main_groups_remove(Main *bmain, PointerRNA *group_ptr) { Group *group = group_ptr->data; - BKE_group_unlink(group); + BKE_group_unlink(bmain, group); BKE_libblock_free(bmain, group); RNA_POINTER_INVALIDATE(group_ptr); } -- cgit v1.2.3