From 051e186d5c61dccfc776b8da9b83c598421be4e7 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Fri, 1 Jun 2018 17:08:38 +0200 Subject: Cleanup: some more G.main removal from editor code. --- source/blender/editors/include/ED_object.h | 2 +- source/blender/editors/io/io_collada.c | 6 ++++-- source/blender/editors/object/object_bake.c | 9 +++++---- source/blender/editors/object/object_bake_api.c | 2 +- source/blender/editors/object/object_edit.c | 12 ++++++------ source/blender/editors/render/render_internal.c | 3 ++- source/blender/editors/space_sequencer/sequencer_add.c | 13 ++++++++----- source/blender/editors/space_sequencer/sequencer_edit.c | 5 +++-- source/blender/editors/util/ed_util.c | 2 +- source/blender/makesrna/intern/rna_object_api.c | 5 +++-- source/blenderplayer/bad_level_call_stubs/stubs.c | 2 +- 11 files changed, 35 insertions(+), 26 deletions(-) (limited to 'source') diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 448e0efc549..75b98caaedb 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -120,7 +120,7 @@ enum { bool ED_object_editmode_exit_ex(struct Scene *scene, struct Object *obedit, int flag); bool ED_object_editmode_exit(struct bContext *C, int flag); bool ED_object_editmode_enter(struct bContext *C, int flag); -bool ED_object_editmode_load(struct Object *obedit); +bool ED_object_editmode_load(struct Main *bmain, struct Object *obedit); bool ED_object_editmode_calc_active_center(struct Object *obedit, const bool select_only, float r_center[3]); diff --git a/source/blender/editors/io/io_collada.c b/source/blender/editors/io/io_collada.c index 42c19c6bc65..7e69aa62896 100644 --- a/source/blender/editors/io/io_collada.c +++ b/source/blender/editors/io/io_collada.c @@ -163,10 +163,12 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op) limit_precision = RNA_boolean_get(op->ptr, "limit_precision"); keep_bind_info = RNA_boolean_get(op->ptr, "keep_bind_info"); + Main *bmain = CTX_data_main(C); + /* get editmode results */ - ED_object_editmode_load(CTX_data_edit_object(C)); + ED_object_editmode_load(bmain, CTX_data_edit_object(C)); - EvaluationContext *eval_ctx = G.main->eval_ctx; + EvaluationContext *eval_ctx = bmain->eval_ctx; Scene *scene = CTX_data_scene(C); ExportSettings export_settings; diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c index 9837fec2b1e..66a87d956f3 100644 --- a/source/blender/editors/object/object_bake.c +++ b/source/blender/editors/object/object_bake.c @@ -588,14 +588,15 @@ static int test_bake_internal(bContext *C, ReportList *reports) static void init_bake_internal(BakeRender *bkr, bContext *C) { + Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); bScreen *sc = CTX_wm_screen(C); /* get editmode results */ - ED_object_editmode_load(CTX_data_edit_object(C)); + ED_object_editmode_load(bmain, CTX_data_edit_object(C)); bkr->sa = sc ? BKE_screen_find_big_area(sc, SPACE_IMAGE, 10) : NULL; /* can be NULL */ - bkr->main = CTX_data_main(C); + bkr->main = bmain; bkr->scene = scene; bkr->actob = (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL; bkr->re = RE_NewRender("_Bake View_"); @@ -628,7 +629,7 @@ static void finish_bake_internal(BakeRender *bkr) /* force OpenGL reload and mipmap recalc */ if ((bkr->scene->r.bake_flag & R_BAKE_VCOL) == 0) { - for (ima = G.main->image.first; ima; ima = ima->id.next) { + for (ima = bkr->main->image.first; ima; ima = ima->id.next) { ImBuf *ibuf = BKE_image_acquire_ibuf(ima, NULL, NULL); /* some of the images could have been changed during bake, @@ -669,7 +670,7 @@ static void finish_bake_internal(BakeRender *bkr) /* update all tagged meshes */ Mesh *me; BLI_assert(BLI_thread_is_main()); - for (me = G.main->mesh.first; me; me = me->id.next) { + for (me = bkr->main->mesh.first; me; me = me->id.next) { if (me->id.tag & LIB_TAG_DOIT) { DAG_id_tag_update(&me->id, OB_RECALC_DATA); BKE_mesh_tessface_clear(me); diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c index c78b9b37da1..d24fc96b007 100644 --- a/source/blender/editors/object/object_bake_api.c +++ b/source/blender/editors/object/object_bake_api.c @@ -621,7 +621,7 @@ static size_t initialize_internal_images(BakeImages *bake_images, ReportList *re /* create new mesh with edit mode changes and modifiers applied */ static Mesh *bake_mesh_new_from_object(Main *bmain, Scene *scene, Object *ob) { - ED_object_editmode_load(ob); + ED_object_editmode_load(bmain, ob); Mesh *me = BKE_mesh_new_from_object(bmain, scene, ob, 1, 2, 0, 0); if (me->flag & ME_AUTOSMOOTH) { diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 98b1a7438c6..d0429fc2bcf 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -323,13 +323,13 @@ void OBJECT_OT_hide_render_set(wmOperatorType *ot) /* ******************* toggle editmode operator ***************** */ -static bool mesh_needs_keyindex(const Mesh *me) +static bool mesh_needs_keyindex(Main *bmain, const Mesh *me) { if (me->key) { return false; /* will be added */ } - for (const Object *ob = G.main->object.first; ob; ob = ob->id.next) { + for (const Object *ob = bmain->object.first; ob; ob = ob->id.next) { if ((ob->parent) && (ob->parent->data == me) && ELEM(ob->partype, PARVERT1, PARVERT3)) { return true; } @@ -437,10 +437,9 @@ static bool ED_object_editmode_load_ex(Main *bmain, Object *obedit, const bool f return true; } -bool ED_object_editmode_load(Object *obedit) +bool ED_object_editmode_load(Main *bmain, Object *obedit) { - /* TODO(sergey): use proper main here? */ - return ED_object_editmode_load_ex(G.main, obedit, false); + return ED_object_editmode_load_ex(bmain, obedit, false); } /** @@ -503,6 +502,7 @@ bool ED_object_editmode_exit(bContext *C, int flag) bool ED_object_editmode_enter(bContext *C, int flag) { + Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); Base *base = NULL; Object *ob; @@ -563,7 +563,7 @@ bool ED_object_editmode_enter(bContext *C, int flag) ok = 1; scene->obedit = ob; /* context sees this */ - const bool use_key_index = mesh_needs_keyindex(ob->data); + const bool use_key_index = mesh_needs_keyindex(bmain, ob->data); EDBM_mesh_make(ob, scene->toolsettings->selectmode, use_key_index); diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 509fdcf080a..c7d80bd1761 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -1372,6 +1372,7 @@ static void render_view3d_free(void *customdata) static bool render_view3d_flag_changed(RenderEngine *engine, const bContext *C) { + Main *bmain = CTX_data_main(C); RegionView3D *rv3d = CTX_wm_region_view3d(C); View3D *v3d = CTX_wm_view3d(C); ARegion *ar = CTX_wm_region(C); @@ -1408,7 +1409,7 @@ static bool render_view3d_flag_changed(RenderEngine *engine, const bContext *C) /* load editmesh */ if (scene->obedit) - ED_object_editmode_load(scene->obedit); + ED_object_editmode_load(bmain, scene->obedit); } engine->update_flag = 0; diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 258cbdfaffd..8315a0eab3d 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -114,9 +114,10 @@ static void sequencer_generic_invoke_path__internal(bContext *C, wmOperator *op, Scene *scene = CTX_data_scene(C); Sequence *last_seq = BKE_sequencer_active_get(scene); if (last_seq && last_seq->strip && SEQ_HAS_PATH(last_seq)) { + Main *bmain = CTX_data_main(C); char path[FILE_MAX]; BLI_strncpy(path, last_seq->strip->dir, sizeof(path)); - BLI_path_abs(path, G.main->name); + BLI_path_abs(path, bmain->name); RNA_string_set(op->ptr, identifier, path); } } @@ -173,8 +174,10 @@ static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, i } } -static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) +static void seq_load_operator_info(SeqLoadInfo *seq_load, bContext *C, wmOperator *op) { + Main *bmain = CTX_data_main(C); + PropertyRNA *prop; const bool relative = (prop = RNA_struct_find_property(op->ptr, "relative_path")) && RNA_property_boolean_get(op->ptr, prop); int is_file = -1; @@ -196,7 +199,7 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) } if ((is_file != -1) && relative) - BLI_path_rel(seq_load->path, G.main->name); + BLI_path_rel(seq_load->path, bmain->name); if ((prop = RNA_struct_find_property(op->ptr, "frame_end"))) { @@ -545,7 +548,7 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad SeqLoadInfo seq_load; int tot_files; - seq_load_operator_info(&seq_load, op); + seq_load_operator_info(&seq_load, C, op); if (seq_load.flag & SEQ_LOAD_REPLACE_SEL) ED_sequencer_deselect_all(scene); @@ -855,7 +858,7 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) StripElem *se; const bool use_placeholders = RNA_boolean_get(op->ptr, "use_placeholders"); - seq_load_operator_info(&seq_load, op); + seq_load_operator_info(&seq_load, C, op); /* images are unique in how they handle this - 1 per strip elem */ if (use_placeholders) { diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 0895d28fba7..a052b76e853 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -3885,13 +3885,14 @@ void SEQUENCER_OT_change_path(struct wmOperatorType *ot) static int sequencer_export_subtitles_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) { + Main *bmain = CTX_data_main(C); if (!RNA_struct_property_is_set(op->ptr, "filepath")) { char filepath[FILE_MAX]; - if (G.main->name[0] == 0) + if (bmain->name[0] == '\0') BLI_strncpy(filepath, "untitled", sizeof(filepath)); else - BLI_strncpy(filepath, G.main->name, sizeof(filepath)); + BLI_strncpy(filepath, bmain->name, sizeof(filepath)); BLI_replace_extension(filepath, sizeof(filepath), ".srt"); RNA_string_set(op->ptr, "filepath", filepath); diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index 8569666c1d9..ee552e53d97 100644 --- a/source/blender/editors/util/ed_util.c +++ b/source/blender/editors/util/ed_util.c @@ -201,7 +201,7 @@ bool ED_editors_flush_edits(const bContext *C, bool for_render) else if (ob->mode & OB_MODE_EDIT) { /* get editmode results */ has_edited = true; - ED_object_editmode_load(ob); + ED_object_editmode_load(bmain, ob); } } diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c index 237f3167f9a..7571194b2fd 100644 --- a/source/blender/makesrna/intern/rna_object_api.c +++ b/source/blender/makesrna/intern/rna_object_api.c @@ -474,9 +474,9 @@ void rna_Object_dm_info(struct Object *ob, int type, char *result) } #endif /* NDEBUG */ -static int rna_Object_update_from_editmode(Object *ob) +static int rna_Object_update_from_editmode(Object *ob, Main *bmain) { - return ED_object_editmode_load(ob); + return ED_object_editmode_load(bmain, ob); } #else /* RNA_RUNTIME */ @@ -702,6 +702,7 @@ void RNA_api_object(StructRNA *srna) func = RNA_def_function(srna, "update_from_editmode", "rna_Object_update_from_editmode"); RNA_def_function_ui_description(func, "Load the objects edit-mode data into the object data"); + RNA_def_function_flag(func, FUNC_USE_MAIN); parm = RNA_def_boolean(func, "result", 0, "", "Success"); RNA_def_function_return(func, parm); diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index 87259a9c86d..ac3d540d358 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -497,7 +497,7 @@ struct ModifierData *ED_object_modifier_add(struct ReportList *reports, struct M void ED_object_modifier_clear(struct Main *bmain, struct Object *ob) RET_NONE bool ED_object_editmode_enter(struct bContext *C, int flag) RET_ZERO bool ED_object_editmode_exit(struct bContext *C, int flag) RET_ZERO -bool ED_object_editmode_load(struct Object *obedit) RET_ZERO +bool ED_object_editmode_load(struct Main *bmain, struct Object *obedit) RET_ZERO void ED_object_check_force_modifiers(struct Main *bmain, struct Scene *scene, struct Object *object) RET_NONE bool uiLayoutGetActive(struct uiLayout *layout) RET_ZERO int uiLayoutGetOperatorContext(struct uiLayout *layout) RET_ZERO -- cgit v1.2.3