From 196a5116aa2f7a3b46daf2047e957b43bee26083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 28 Dec 2018 15:37:53 +0100 Subject: Fix T59164: Run Alembic in background when INVOKE'd This is similar to what physics baking is doing: invoking the operator runs a background job, whereas executing blocks. This makes Python scripts calling the Alembic import/export operators more predictable. For backwardward compatibility with existing Python code the `as_background_job` parameter still exists, which overrides the behaviour chosen by INVOKE/EXECUTE. Reviewers: brecht Reviewed by: brecht Differential revision: https://developer.blender.org/D4137/new/ --- source/blender/editors/io/io_alembic.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'source/blender/editors/io') diff --git a/source/blender/editors/io/io_alembic.c b/source/blender/editors/io/io_alembic.c index 8e446c73eab..38e0ec0cb3a 100644 --- a/source/blender/editors/io/io_alembic.c +++ b/source/blender/editors/io/io_alembic.c @@ -77,6 +77,10 @@ static int wm_alembic_export_invoke(bContext *C, wmOperator *op, const wmEvent *event) { + if (!RNA_struct_property_is_set(op->ptr, "as_background_job")) { + RNA_boolean_set(op->ptr, "as_background_job", true); + } + RNA_boolean_set(op->ptr, "init_scene_frame_range", true); if (!RNA_struct_property_is_set(op->ptr, "filepath")) { @@ -388,8 +392,10 @@ void WM_OT_alembic_export(wmOperatorType *ot) RNA_def_boolean(ot->srna, "export_hair", 1, "Export Hair", "Exports hair particle systems as animated curves"); RNA_def_boolean(ot->srna, "export_particles", 1, "Export Particles", "Exports non-hair particle systems"); - RNA_def_boolean(ot->srna, "as_background_job", true, "Run as Background Job", - "Enable this to run the import in the background, disable to block Blender while importing"); + RNA_def_boolean(ot->srna, "as_background_job", false, "Run as Background Job", + "Enable this to run the import in the background, disable to block Blender while importing. " + "This option is deprecated; EXECUTE this operator to run in the foreground, and INVOKE it " + "to run as a background job"); /* This dummy prop is used to check whether we need to init the start and * end frame values to that of the scene's, otherwise they are reset at @@ -522,6 +528,17 @@ static void wm_alembic_import_draw(bContext *UNUSED(C), wmOperator *op) ui_alembic_import_settings(op->layout, &ptr); } + +/* op->invoke, opens fileselect if path property not set, otherwise executes */ +static int wm_alembic_import_invoke(bContext *C, wmOperator *op, const wmEvent *event) +{ + if (!RNA_struct_property_is_set(op->ptr, "as_background_job")) { + RNA_boolean_set(op->ptr, "as_background_job", true); + } + return WM_operator_filesel(C, op, event); +} + + static int wm_alembic_import_exec(bContext *C, wmOperator *op) { if (!RNA_struct_property_is_set(op->ptr, "filepath")) { @@ -568,7 +585,7 @@ void WM_OT_alembic_import(wmOperatorType *ot) ot->description = "Load an Alembic archive"; ot->idname = "WM_OT_alembic_import"; - ot->invoke = WM_operator_filesel; + ot->invoke = wm_alembic_import_invoke; ot->exec = wm_alembic_import_exec; ot->poll = WM_operator_winactive; ot->ui = wm_alembic_import_draw; @@ -591,8 +608,10 @@ void WM_OT_alembic_import(wmOperatorType *ot) RNA_def_boolean(ot->srna, "is_sequence", false, "Is Sequence", "Set to true if the cache is split into separate files"); - RNA_def_boolean(ot->srna, "as_background_job", true, "Run as Background Job", - "Enable this to run the export in the background, disable to block Blender while exporting"); + RNA_def_boolean(ot->srna, "as_background_job", false, "Run as Background Job", + "Enable this to run the export in the background, disable to block Blender while exporting. " + "This option is deprecated; EXECUTE this operator to run in the foreground, and INVOKE it " + "to run as a background job"); } #endif -- cgit v1.2.3