diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-09-14 10:50:01 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-09-14 10:59:26 +0300 |
commit | 14b0f203744027451533f563c5d7373b73e070e0 (patch) | |
tree | f5190a031d6b52fdb2d07bdedef6ef652983a6ae /source/blender/makesrna/intern/rna_wm_api.c | |
parent | c207f7c22e1439e0b285fba5d2c072bdae23f981 (diff) |
Fix T80694: Crash reloading scripts from the Python console
Running `bpy.ops.script.reload()` from Python was crashing
since the operator being called was it's self freed.
Change the reload operator to defer execution - as supporting
re-registration during execution is quite involved for a corner-case.
Diffstat (limited to 'source/blender/makesrna/intern/rna_wm_api.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_wm_api.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index ee7ff472c12..8d7a3cddbc5 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -558,6 +558,12 @@ static void rna_WindowManager_print_undo_steps(wmWindowManager *wm) BKE_undosys_print(wm->undo_stack); } +static void rna_WindowManager_tag_script_reload(void) +{ + WM_script_tag_reload(); + WM_main_add_notifier(NC_WINDOW, NULL); +} + static PointerRNA rna_WindoManager_operator_properties_last(const char *idname) { wmOperatorType *ot = WM_operatortype_find(idname, true); @@ -913,6 +919,12 @@ void RNA_api_wm(StructRNA *srna) RNA_def_function(srna, "print_undo_steps", "rna_WindowManager_print_undo_steps"); + /* Used by (#SCRIPT_OT_reload). */ + func = RNA_def_function(srna, "tag_script_reload", "rna_WindowManager_tag_script_reload"); + RNA_def_function_ui_description( + func, "Tag for refreshing the interface after scripts have been reloaded"); + RNA_def_function_flag(func, FUNC_NO_SELF); + parm = RNA_def_property(srna, "is_interface_locked", PROP_BOOLEAN, PROP_NONE); RNA_def_property_ui_text( parm, |